Saya baru saja mulai bekerja dengan Angular 2.
Saya bertanya-tanya apa perbedaan antara komponen dan arahan di Angular 2?
Saya baru saja mulai bekerja dengan Angular 2.
Saya bertanya-tanya apa perbedaan antara komponen dan arahan di Angular 2?
Jawaban:
Pada dasarnya ada tiga jenis arahan di Angular2 menurut dokumentasi.
Ini juga merupakan jenis direktif dengan templat, gaya dan bagian logika yang merupakan jenis direktif paling terkenal di antara semua di Angular2. Dalam jenis arahan ini Anda dapat menggunakan arahan lain apakah itu kustom atau bawaan dalam @Component
anotasi seperti berikut:
@Component({
selector: "my-app"
directives: [custom_directive_here]
})
Gunakan petunjuk ini dalam pandangan Anda sebagai:
<my-app></my-app>
Untuk petunjuk komponen saya telah menemukan tutorial terbaik di sini.
Seperti *ngFor
dan *ngIf
, digunakan untuk mengubah tata letak DOM dengan menambahkan dan menghapus elemen DOM. dijelaskan di sini
Mereka digunakan untuk memberikan perilaku atau gaya kustom ke elemen yang ada dengan menerapkan beberapa fungsi / logika. SukangStyle
adalah direktif atribut untuk memberikan gaya secara dinamis ke elemen. Kita dapat membuat direktif kita sendiri dan menggunakan ini sebagai atribut dari beberapa elemen standar atau kustom, berikut adalah contoh dari sebuah direktif sederhana:
Pertama kita harus mengimpor direktif dari @angular/core
import {Directive, ElementRef, Renderer, Input} from '@angular/core';
@Directive({
selector: '[Icheck]',
})
export class RadioCheckbox {
// custom logic here...
}
Kita bisa menggunakan ini dalam tampilan seperti di bawah ini:
<span Icheck>HEllo Directive</span>
Untuk info lebih lanjut Anda bisa membaca tutorial resminya disini dan disini
Komponen memiliki tampilan sendiri (HTML dan gaya). Arahan hanyalah "perilaku" yang ditambahkan ke elemen dan komponen yang ada.
Component
meluas Directive
.
Karena itu hanya boleh ada satu komponen pada elemen host, tetapi beberapa direktif.
Arahan struktural adalah arahan yang diterapkan ke <template>
elemen dan digunakan untuk menambah / menghapus konten (mencap template). Aplikasi *
dalam direktif seperti *ngIf
menyebabkan <template>
tag dibuat secara implisit.
Untuk melengkapi apa yang dikatakan Günter, kita dapat membedakan dua jenis arahan:
NgFor
dan NgIf
. Ini terkait dengan konsep template dan harus diawali dengan *
. Lihat bagian "Templat dan *" di tautan ini untuk detail selengkapnya: http://victorsavkin.com/post/119943127151/angular-2-template-syntaxSemoga membantu Anda, Thierry
Inilah definisi sebenarnya.
Definisi lainnya salah.
Komponen adalah arahan dengan tampilan terkait (yaitu HTML yang akan dirender). Semua komponen adalah arahan, tetapi tidak semua arahan adalah komponen. Ada tiga jenis arahan:
*ngIf
yang dapat menyisipkan atau menghapus elemen DOM (atau komponen sudut yang merupakan elemen DOM kustom, tetapi masih elemen DOM).import { Component, HostListener, HostBinding, Directive, ElementRef } from '@angular/core';
@Directive({
selector: '[appHighlight]'
})
export class HighlightDirective {
constructor(el: ElementRef) {
el.nativeElement.style.backgroundColor = 'yellow';
}
}
@Component({
selector: 'app-root',
template: `
<div *ngIf='myBool' appHighlight>Hi there</div>
`,
styleUrls: ['./app.component.scss'],
})
export class AppComponent {
myBool:boolean = true;
}
Dalam contoh di atas kita dapat mengamati yang berikut ini:
AppComponent
memiliki template dengan<div>
elemen yang ditampilkan, hai.<div>
elemen. Ini berarti akan memanipulasi perilaku file<div>
elemen. Dalam hal ini, ini akan menyorot teks dan mengubahnya menjadi kuning.*ngIf
juga terletak pada <div>
elemen dan akan menentukan apakah elemen akan dimasukkan. Ini <div>
akan ditampilkan secara bersyarat tergantung pada apakah ekspresi myBool
dapat dipaksakan true
.Angular 2 mengikuti model arsitektur komponen / Layanan.
Aplikasi sudut 2 terbuat dari komponen. Komponen adalah kombinasi dari template HTML dan kelas komponen (kelas skrip ketikan) yang mengontrol sebagian layar.
Untuk praktik yang baik, kelas komponen digunakan untuk pengikatan data ke tampilan masing-masing. Pengikatan data dua arah adalah fitur hebat yang disediakan oleh kerangka sudut.
Komponen dapat digunakan kembali di seluruh aplikasi Anda menggunakan nama pemilih yang disediakan.
Komponen juga merupakan jenis direktif dengan templat.
Dua arahan lainnya adalah
Arahan struktural — ubah tata letak DOM dengan menambahkan dan menghapus elemen DOM. Contoh: NgFor
dan NgIf
.
Atribut direktif — mengubah tampilan atau perilaku elemen, komponen, atau arahan lain. Ex: NgStyle
Sebenarnya komponen juga merupakan arahan, tetapi memiliki perbedaan di antara keduanya.
Atribut Direktif :
Atribut direktif adalah kelas yang mampu mengubah perilaku atau tampilan sebuah elemen. Untuk membuat direktif atribut, terapkan @Directive
ke kelas.
import { Directive, ElementRef } from "@angular/core";
@Directive({
selector: "[custom-attr]", })
export class CustomAttrDirective {
constructor(element: ElementRef) {
element.nativeElement.classList.add("bg-success", "text-white");
}
}
Menambahkan file template.html atribut direktif
<tr *ngFor="let item of getProducts(); let i = index" custom-attr>
<td>{{i + 1}}</td>
<td>{{item.name}}</td>
</tr>
Arahan Struktural :
Arahan struktural mengubah tata letak dokumen HTML dengan menambahkan dan menghapus elemen, sebagai mikro-template. Arahan struktural memungkinkan konten ditambahkan secara bersyarat berdasarkan hasil ekspresi seperti *ngIf
atau untuk konten yang sama diulang untuk setiap objek dalam sumber data seperti *ngFor
.
Anda dapat menggunakan arahan bawaan untuk tugas-tugas umum, tetapi menulis arahan struktural khusus memberikan kemampuan untuk menyesuaikan perilaku dengan aplikasi Anda.
<p *ngIf="true">
Expression is true and ngIf is true.
This paragraph is in the DOM.
</p>
<p *ngIf="false">
Expression is false and ngIf is false.
This paragraph is not in the DOM.
</p>
Komponen :
Komponen adalah arahan yang template mereka sendiri, daripada mengandalkan konten yang disediakan dari tempat lain. Komponen memiliki akses ke semua fitur direktif, masih memiliki elemen host, masih dapat mendefinisikan properti input dan output, dan sebagainya, tetapi mereka juga menentukan kontennya sendiri.
Mungkin mudah untuk meremehkan pentingnya template, tetapi atribut dan arahan struktural memiliki keterbatasan. Arahan dapat melakukan pekerjaan yang berguna dan kuat, tetapi mereka tidak memiliki banyak wawasan tentang elemen yang diterapkan padanya. Direktif paling berguna ketika mereka adalah alat tujuan umum, seperti ngModel
direktif, yang dapat diterapkan ke properti model data dan elemen formulir apa pun, tanpa memperhatikan untuk apa data atau elemen tersebut digunakan.
Komponen, sebaliknya, terkait erat dengan konten templatnya. Komponen menyediakan data dan logika yang akan digunakan oleh data binding yang diterapkan ke elemen HTML di template, yang menyediakan konteks yang digunakan untuk mengevaluasi ekspresi data binding dan bertindak sebagai perekat antara arahan dan aplikasi lainnya. Komponen juga merupakan alat yang berguna untuk memungkinkan proyek Angular besar dipecah menjadi beberapa bagian yang dapat dikelola.
import { Component, Input } from '@angular/core';
import { Hero } from './hero';
@Component({
selector: 'app-hero-child',
template: `
<h3>{{hero.name}} says:</h3>
<p>I, {{hero.name}}, am at your service, {{masterName}}.</p>
`
})
export class HeroChildComponent {
@Input() hero: Hero;
@Input('master') masterName: string;
}