ฉันต้องการสร้างส่วนขยายสำหรับส่วนประกอบบางส่วนที่ปรับใช้แล้วใน Angular 2 โดยไม่ต้องเขียนใหม่เกือบทั้งหมดเนื่องจากองค์ประกอบพื้นฐานสามารถรับการเปลี่ยนแปลงได้และหวังว่าการเปลี่ยนแปลงเหล่านี้จะสะท้อนให้เห็นในองค์ประกอบที่ได้รับด้วย
ฉันสร้างตัวอย่างง่าย ๆ นี้เพื่อพยายามอธิบายคำถามของฉันให้ดีขึ้น:
ด้วยองค์ประกอบฐานต่อไปนี้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);
}
}
คุณต้องการสร้างองค์ประกอบอนุพันธ์อื่นเพียงแก้ไขตัวอย่างเช่นพฤติกรรมองค์ประกอบพื้นฐานในกรณีของสีตัวอย่าง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";
}
}
ทำตัวอย่างการทำงานให้สมบูรณ์ใน Plunker
หมายเหตุ: เห็นได้ชัดว่าตัวอย่างนี้ง่ายและสามารถแก้ไขได้มิฉะนั้นไม่จำเป็นต้องใช้การสืบทอด แต่มันมีวัตถุประสงค์เพียงเพื่อแสดงให้เห็นถึงปัญหาที่แท้จริง
ที่คุณสามารถดูในการดำเนินงานขององค์ประกอบอนุพันธ์app/my-panel.component.ts
มากของการดำเนินการซ้ำและส่วนเดียวที่สืบทอดมาจริงๆเป็นclass
BasePanelComponent
แต่มีการทำซ้ำโดยทั่วไปสมบูรณ์ไม่ได้เป็นเพียงบางส่วนที่มีการเปลี่ยนแปลงเป็น@Component
selector: 'my-panel'
มีวิธีใดบ้างที่จะสร้างการสืบทอดแบบเต็มรูปแบบของส่วนประกอบ Angular2 โดยการสืบทอดclass
คำจำกัดความของการทำเครื่องหมาย / คำอธิบายประกอบตัวอย่างเช่น@Component
?
แก้ไข 1 - คำขอคุณสมบัติ
เพิ่มคำขอคุณลักษณะ angular2 ในโครงการบน GitHub: เพิ่ม/ รับมรดกส่วนประกอบ angular2 คำอธิบายประกอบ # 7968
แก้ไข 2 - ปิดคำขอ
คำขอถูกปิดด้วยเหตุนี้ที่จะไม่ทราบวิธีรวมผู้ตกแต่งภายในสั้น ๆ ปล่อยให้เราไม่มีทางเลือก ดังนั้นความคิดของฉันจะถูกอ้างถึงในประเด็น