Saya ingin membuat ekstensi untuk beberapa komponen yang sudah digunakan di Angular 2, tanpa harus menulis ulang mereka hampir sepenuhnya, karena komponen dasar dapat mengalami perubahan dan berharap perubahan ini juga tercermin dalam komponen turunannya.
Saya membuat contoh sederhana ini untuk mencoba menjelaskan pertanyaan saya dengan lebih baik:
Dengan komponen dasar berikut app/base-panel.component.ts
:
import {Component, Input} from 'angular2/core';
@Component({
selector: 'base-panel',
template: '<div class="panel" [style.background-color]="color" (click)="onClick($event)">{{content}}</div>',
styles: [`
.panel{
padding: 50px;
}
`]
})
export class BasePanelComponent {
@Input() content: string;
color: string = "red";
onClick(event){
console.log("Click color: " + this.color);
}
}
Apakah Anda ingin membuat komponen turunan lain hanya alter, misalnya, perilaku komponen dasar dalam kasus contoh warna, app/my-panel.component.ts
:
import {Component} from 'angular2/core';
import {BasePanelComponent} from './base-panel.component'
@Component({
selector: 'my-panel',
template: '<div class="panel" [style.background-color]="color" (click)="onClick($event)">{{content}}</div>',
styles: [`
.panel{
padding: 50px;
}
`]
})
export class MyPanelComponent extends BasePanelComponent{
constructor() {
super();
this.color = "blue";
}
}
Contoh kerja lengkap di Plunker
Catatan: Jelas contoh ini sederhana dan dapat diselesaikan jika tidak perlu menggunakan warisan, tetapi ini dimaksudkan hanya untuk menggambarkan masalah sebenarnya.
Seperti yang Anda lihat dalam implementasi komponen turunan app/my-panel.component.ts
, banyak implementasi diulangi, dan satu bagian yang benar-benar diwariskan adalah class
BasePanelComponent
, tetapi pada @Component
dasarnya harus diulangi sepenuhnya, bukan hanya bagian yang diubah, seperti selector: 'my-panel'
.
Apakah ada cara untuk membuat warisan penuh komponen Angular2, yang mewarisi class
definisi tanda / anotasi, misalnya @Component
?
Sunting 1 - Permintaan Fitur
Permintaan fitur angular2 ditambahkan ke proyek di GitHub: Memperpanjang / Mewarisi komponen angular2 penjelasan # 7968
Sunting 2 - Permintaan Tertutup
Permintaan ditutup, karena alasan ini , bahwa sebentar tidak akan tahu bagaimana menggabungkan dekorator yang akan dibuat. Meninggalkan kami tanpa opsi. Jadi pendapat saya dikutip dalam Issue .