기본 구성 요소가 변경 될 수 있으며 이러한 변경 사항이 파생 구성 요소에도 반영되기를 원하므로 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);
}
}
당신은 예를 들어, 단지 ALTER 다른 파생 구성 요소를 만드시겠습니까, 예제 색상의 경우 기본 구성 요소 행동 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";
}
}
참고 :이 예제는 간단하고 상속을 사용할 필요가 없지만 해결할 수는 있지만 실제 문제를 설명하기위한 것입니다.
파생 구성 요소의 구현에서 볼 수 있듯이 app/my-panel.component.ts
많은 구현이 반복되었으며 실제로 상속 된 단일 부분은 class
BasePanelComponent
이지만 @Component
변경 부분뿐만 아니라 기본적으로 완전히 반복되어야했습니다 selector: 'my-panel'
.
구성 요소 Angular2를 문자 그대로 완전히 상속 class
하여 표시 / 주석 의 정의를 상속받는 방법이 @Component
있습니까?
편집 1-기능 요청
기능 요청 angular2가 GitHub의 프로젝트에 추가됨 : angular2 구성 요소 주석 확장 / 상속 # 7968
편집 2-마감 요청
이로 인해 데코레이터를 병합하는 방법을 간략하게 알지 못하도록 요청이 마감되었습니다 . 옵션없이 우리를 떠나. 따라서 제 의견은 이슈에 인용되어 있습니다.