मैं पहले से ही लगभग पूरी तरह से उन्हें फिर से लिखने के बिना, कोणीय 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";
}
}
प्लंकर में काम करने का पूरा उदाहरण
नोट: स्पष्ट रूप से यह उदाहरण सरल है और इसे हल किया जा सकता है अन्यथा इनहेरिटेंस का उपयोग करने की कोई आवश्यकता नहीं है, लेकिन इसका उद्देश्य केवल वास्तविक समस्या का वर्णन करना है।
जैसा कि आप व्युत्पन्न घटक के कार्यान्वयन में देख सकते हैं app/my-panel.component.ts
, बहुत अधिक कार्यान्वयन दोहराया गया था, और वास्तव में विरासत में मिला एकल भाग था class
BasePanelComponent
, लेकिन कार्यान्वयन के @Component
रूप में मूल रूप से पूरी तरह से दोहराया जाना चाहिए, न कि केवल बदले हुए हिस्से selector: 'my-panel'
।
क्या एक घटक Angular2 की शाब्दिक पूर्ण विरासत बनाने का कोई तरीका है class
, उदाहरण के लिए चिह्नों / टिप्पणियों की परिभाषा विरासत में मिली है @Component
?
संपादित 1 - फ़ीचर अनुरोध
GitHub पर प्रोजेक्ट में फ़ीचर अनुरोध कोणीय 2 जोड़ा गया: विस्तार / Inherit कोणीय 2 घटक एनोटेशन # 7968
2 संपादित करें - बंद अनुरोध
अनुरोध बंद कर दिया गया था, इस कारण से , संक्षेप में पता नहीं होगा कि डेकोरेटर को कैसे मर्ज किया जाएगा। हमें कोई विकल्प नहीं छोड़कर। इसलिए मेरी राय अंक में उद्धृत की गई है ।