Komponen adalah arahan dengan templat dan @Componentdekorator sebenarnya @Directivedekorator yang diperluas dengan fitur berorientasi templat - sumber .
Cosmin Ababei
2
Arahan vs Komponen adalah Layanan vs Pabrik baru. Kebingungan juga meningkat karena ketika sebenarnya membutuhkan komponen lain dari definisi komponen yang Anda tentukan dalam directivesarray ... mungkin komentar Lida Weng di bawah ini membantu sedikit mengklarifikasi bahwa komponen "itu sebenarnya merupakan 'Petunjuk' yang diperluas"
Nobita
1
komponen sebenarnya memperluas direktif, mereka hanya mengharuskan Anda untuk memiliki template (HTML) sebagai lawan dari arahan .. Jadi, Anda akan menggunakan arahan untuk memodifikasi elemen html yang ada, dan komponen membuat elemen html
Marko Niciforovic
Jawaban:
547
@Component membutuhkan tampilan sedangkan @Directive tidak.
Arahan
Saya menyamakan @Directive ke directive 1.0 Angular dengan opsirestrict: 'A' (Arahan tidak terbatas pada penggunaan atribut.) Arahan menambahkan perilaku ke elemen DOM yang ada atau contoh komponen yang ada. Salah satu contoh use case untuk arahan adalah untuk mencatat klik pada suatu elemen.
Komponen, daripada menambahkan / memodifikasi perilaku, sebenarnya menciptakan pandangannya sendiri (hierarki elemen DOM) dengan perilaku terlampir. Contoh use case untuk ini mungkin komponen kartu kontak:
ContactCardadalah komponen UI yang dapat digunakan kembali yang dapat kita gunakan di mana saja dalam aplikasi kita, bahkan di dalam komponen lain. Ini pada dasarnya membentuk blok bangunan UI aplikasi kita.
Singkatnya
Tulis komponen saat Anda ingin membuat elemen DOM UI yang dapat digunakan kembali dengan perilaku khusus. Tulis arahan ketika Anda ingin menulis perilaku yang dapat digunakan kembali untuk melengkapi elemen DOM yang ada.
apakah anotasi @directive memiliki properti template / templateUrl?
Pardeep jain
7
Apakah jawaban ini masih benar? Tutorial angular2 sendiri menciptakan komponen tanpa tampilan
Tamas Hegedus
itu tanpa tampilan, tetapi
templaturl
4
Saya suka jawaban semacam ini, tetapi saya akan sangat menghargai pembaruan ketika perubahan penting terjadi pada kerangka kerja.
Memet Olsen
Ini perlu diubah sedikit. API 2 sudut telah berubah. Tidak ada dekorator Lihat lagi.
DaSch
79
Komponen
Untuk mendaftarkan komponen, kami menggunakan @Componentanotasi meta-data.
Komponen adalah arahan yang menggunakan bayangan DOM untuk membuat perilaku visual enkapsulasi yang disebut komponen. Komponen biasanya digunakan untuk membuat widget UI.
Komponen digunakan untuk memecah aplikasi menjadi komponen yang lebih kecil.
Hanya satu komponen yang dapat ditampilkan per elemen DOM.
@View dekorator atau templateurl adalah wajib dalam komponen.
Pengarahan
Untuk mendaftar arahan, kami menggunakan @Directiveanotasi meta-data.
Arahan digunakan untuk menambahkan perilaku ke elemen DOM yang ada.
Arahan digunakan untuk merancang komponen yang dapat digunakan kembali.
Tidak yakin mengapa Anda terlalu banyak memilih. Tampaknya @Component adalah Petunjuk dengan templat (untuk menghasilkan tampilan) untuk saya.
Harry Ninh
22
Dalam Angular 2 dan di atas, "semuanya adalah komponen." Komponen adalah cara utama kami membangun dan menentukan elemen dan logika pada halaman, melalui elemen dan atribut khusus yang menambah fungsionalitas ke komponen kami yang ada.
Jadi apa yang dilakukannya, itu akan memperluas Anda komponen dan elemen HTML dengan menambahkan latar belakang kuning dan Anda dapat menggunakannya seperti di bawah ini:
<p myHighlight>Highlight me!</p>
Tetapi komponen akan membuat elemen penuh dengan semua fungsi seperti di bawah ini:
import { Component } from '@angular/core';
@Component({
selector: 'my-component',
template: `
<div>Hello my name is {{name}}.
<button (click)="sayMyName()">Say my name</button>
</div>
`
})
export class MyComponent {
name: string;
constructor() {
this.name = 'Alireza'
}
sayMyName() {
console.log('My name is', this.name)
}
}
dan Anda dapat menggunakannya seperti di bawah ini:
<my-component></my-component>
Saat kami menggunakan tag dalam HTML, komponen ini akan dibuat dan konstruktor dipanggil dan dirender.
Hanya @Componentbisa menjadi simpul di pohon deteksi deteksi. Ini berarti bahwa Anda tidak dapat mengatur ChangeDetectionStrategy.OnPushdalam @Directive. Terlepas dari kenyataan ini, Arahan dapat memiliki @Inputdan @Outputproperti dan Anda dapat menyuntikkan dan memanipulasi komponen host ChangeDetectorRefdari itu. Jadi gunakan Komponen ketika Anda membutuhkan kontrol granular atas pohon deteksi perubahan Anda.
Dalam konteks pemrograman, arahan memberikan panduan kepada kompiler untuk mengubah bagaimana itu akan memproses input, yaitu mengubah beberapa perilaku.
"Arahan memungkinkan Anda untuk melampirkan perilaku ke elemen di DOM."
arahan dibagi menjadi 3 kategori:
Atribut
Struktural
Komponen
Ya, dalam Angular 2, Komponen adalah jenis Arahan. Menurut Doc,
“Komponen sudut adalah bagian dari arahan. Tidak seperti arahan, komponen selalu memiliki templat dan hanya satu komponen yang dapat dipakai per elemen dalam templat. "
Komponen 2 Sudut adalah implementasi dari konsep Komponen Web . Komponen Web terdiri dari beberapa teknologi terpisah. Anda dapat menganggap Komponen Web sebagai widget antarmuka pengguna yang dapat digunakan kembali yang dibuat menggunakan teknologi Web terbuka.
Jadi dalam arahan ringkasan Mekanisme dengan mana kita melampirkan perilaku ke elemen dalam DOM, yang terdiri dari tipe Struktural, Atribut, dan Komponen.
Komponen adalah tipe spesifik dari arahan yang memungkinkan kita untuk memanfaatkan fungsionalitas komponen web yang dapat digunakan kembali AKA - dienkapsulasi, elemen yang dapat digunakan kembali tersedia di seluruh aplikasi kita.
Arahan struktural — ubah tata letak DOM dengan menambahkan dan menghapus elemen DOM. mis. * ngIf
Arahan atribut — mengubah tampilan atau perilaku elemen, komponen, atau arahan lain. misal [ngClass].
Ketika Aplikasi tumbuh, kami mengalami kesulitan dalam mempertahankan semua kode ini. Untuk tujuan usabilitas, kami memisahkan logika kami dalam komponen pintar dan komponen bodoh dan kami menggunakan arahan (struktural atau atribut) untuk membuat perubahan di DOM.
Komponen adalah blok bangunan UI paling dasar dari aplikasi Angular. Aplikasi Angular berisi pohon komponen Angular. Aplikasi kami di Angular dibangun di atas pohon komponen . Setiap komponen harus memiliki template, gaya, siklus hidup, pemilih, dll. Jadi, setiap komponen memiliki strukturnya Anda dapat memperlakukannya sebagai aplikasi web kecil terpisah yang terpisah dengan templat dan logika sendiri serta kemungkinan untuk berkomunikasi dan digunakan bersama dengan lainnya. komponen.
Sampel .ts file untuk Komponen:
import { Component } from '@angular/core';
@Component({
// component attributes
selector: 'app-training',
templateUrl: './app-training.component.html',
styleUrls: ['./app-training.component.less']
})
export class AppTrainingComponent {
title = 'my-app-training';
}
dan tampilan templat ./app.component.html:
Hello {{title}}
Kemudian Anda dapat membuat templat AppTrainingComponent dengan logikanya di komponen lain (setelah menambahkannya ke dalam modul)
Arahan mengubah penampilan atau perilaku elemen DOM yang ada. Misalnya [ngStyle] adalah arahan. Arahan dapat memperluas komponen (dapat digunakan di dalamnya) tetapi mereka tidak membangun keseluruhan aplikasi . Katakanlah mereka hanya mendukung komponen.Mereka tidak memiliki template sendiri (tetapi tentu saja, Anda dapat memanipulasi template dengan mereka).
@Component
dekorator sebenarnya@Directive
dekorator yang diperluas dengan fitur berorientasi templat - sumber .directives
array ... mungkin komentar Lida Weng di bawah ini membantu sedikit mengklarifikasi bahwa komponen "itu sebenarnya merupakan 'Petunjuk' yang diperluas"Jawaban:
@Component membutuhkan tampilan sedangkan @Directive tidak.
Arahan
Saya menyamakan @Directive ke directive 1.0 Angular dengan opsi(Arahan tidak terbatas pada penggunaan atribut.) Arahan menambahkan perilaku ke elemen DOM yang ada atau contoh komponen yang ada. Salah satu contoh use case untuk arahan adalah untuk mencatat klik pada suatu elemen.restrict: 'A'
Yang akan digunakan seperti ini:
Komponen
Komponen, daripada menambahkan / memodifikasi perilaku, sebenarnya menciptakan pandangannya sendiri (hierarki elemen DOM) dengan perilaku terlampir. Contoh use case untuk ini mungkin komponen kartu kontak:
Yang akan digunakan seperti ini:
ContactCard
adalah komponen UI yang dapat digunakan kembali yang dapat kita gunakan di mana saja dalam aplikasi kita, bahkan di dalam komponen lain. Ini pada dasarnya membentuk blok bangunan UI aplikasi kita.Singkatnya
Tulis komponen saat Anda ingin membuat elemen DOM UI yang dapat digunakan kembali dengan perilaku khusus. Tulis arahan ketika Anda ingin menulis perilaku yang dapat digunakan kembali untuk melengkapi elemen DOM yang ada.
Sumber:
sumber
Komponen
@Component
anotasi meta-data.@View
dekorator atau templateurl adalah wajib dalam komponen.Pengarahan
@Directive
anotasi meta-data.Sumber:
http://www.codeandyou.com/2016/01/difference-between-component-and-directive-in-Angular2.html
sumber
Komponen adalah direktif-dengan-template dan
@Component
dekorator sebenarnya@Directive
dekorator yang diperluas dengan fitur berorientasi template.sumber
http://learnangular2.com/components/
Tapi arahan apa yang dilakukan di Angular2 +?
https://angular.io/docs/ts/latest/guide/attribute-directives.html
Jadi apa yang terjadi di Angular2 dan di atas adalah Arahan adalah atribut yang menambah fungsionalitas ke elemen dan komponen .
Lihatlah contoh di bawah ini dari Angular.io:
Jadi apa yang dilakukannya, itu akan memperluas Anda komponen dan elemen HTML dengan menambahkan latar belakang kuning dan Anda dapat menggunakannya seperti di bawah ini:
Tetapi komponen akan membuat elemen penuh dengan semua fungsi seperti di bawah ini:
dan Anda dapat menggunakannya seperti di bawah ini:
Saat kami menggunakan tag dalam HTML, komponen ini akan dibuat dan konstruktor dipanggil dan dirender.
sumber
Ubah deteksi
Hanya
@Component
bisa menjadi simpul di pohon deteksi deteksi. Ini berarti bahwa Anda tidak dapat mengaturChangeDetectionStrategy.OnPush
dalam@Directive
. Terlepas dari kenyataan ini, Arahan dapat memiliki@Input
dan@Output
properti dan Anda dapat menyuntikkan dan memanipulasi komponen hostChangeDetectorRef
dari itu. Jadi gunakan Komponen ketika Anda membutuhkan kontrol granular atas pohon deteksi perubahan Anda.sumber
Dalam konteks pemrograman, arahan memberikan panduan kepada kompiler untuk mengubah bagaimana itu akan memproses input, yaitu mengubah beberapa perilaku.
arahan dibagi menjadi 3 kategori:
Ya, dalam Angular 2, Komponen adalah jenis Arahan. Menurut Doc,
Komponen 2 Sudut adalah implementasi dari konsep Komponen Web . Komponen Web terdiri dari beberapa teknologi terpisah. Anda dapat menganggap Komponen Web sebagai widget antarmuka pengguna yang dapat digunakan kembali yang dibuat menggunakan teknologi Web terbuka.
sumber
Jika Anda merujuk dokumen sudut resmi
Ada tiga jenis arahan dalam Angular:
Ketika Aplikasi tumbuh, kami mengalami kesulitan dalam mempertahankan semua kode ini. Untuk tujuan usabilitas, kami memisahkan logika kami dalam komponen pintar dan komponen bodoh dan kami menggunakan arahan (struktural atau atribut) untuk membuat perubahan di DOM.
sumber
Komponen
Komponen adalah blok bangunan UI paling dasar dari aplikasi Angular. Aplikasi Angular berisi pohon komponen Angular. Aplikasi kami di Angular dibangun di atas pohon komponen . Setiap komponen harus memiliki template, gaya, siklus hidup, pemilih, dll. Jadi, setiap komponen memiliki strukturnya Anda dapat memperlakukannya sebagai aplikasi web kecil terpisah yang terpisah dengan templat dan logika sendiri serta kemungkinan untuk berkomunikasi dan digunakan bersama dengan lainnya. komponen.
Sampel .ts file untuk Komponen:
dan tampilan templat ./app.component.html:
Kemudian Anda dapat membuat templat AppTrainingComponent dengan logikanya di komponen lain (setelah menambahkannya ke dalam modul)
dan hasilnya akan
karena AppTrainingComponent diberikan di sini
Lihat lebih lanjut tentang Komponen
Arahan
Arahan mengubah penampilan atau perilaku elemen DOM yang ada. Misalnya [ngStyle] adalah arahan. Arahan dapat memperluas komponen (dapat digunakan di dalamnya) tetapi mereka tidak membangun keseluruhan aplikasi . Katakanlah mereka hanya mendukung komponen.Mereka tidak memiliki template sendiri (tetapi tentu saja, Anda dapat memanipulasi template dengan mereka).
Arahan sampel:
Dan penggunaannya:
Lihat lebih lanjut tentang arahan
sumber