2017-03-07 5 views
2

Ich habe eine Komponente, die für viele Komponenten wie ein Blueprint fungiert. Sie alle teilen die gleichen Methoden. Wie kann ich daraus einen Entwurf machen?Angular - Blueprint der Komponente

Ich möchte nicht zu Methoden in allen anderen Komponenten wiederholen. Ich möchte nur eine Methode überschreiben, wenn ich etwas von der Funktionalität ändern muss.

@Component({ 
    template: ` 
     <datagrid (onRefresh)="loadCollection($event)" (onRowSelect)="loadRecord($event)" (onCreateRecord)="createRecord()"></datagrid> 
    `, 
    providers: [CollectionService] 
}) 
export class ListComponent implements OnInit{ 

    loadCollection($event){ 
     ... 
    } 


    loadRecord($event){ 
     ... 
    } 

    createRecord(){ 
     ... 
    } 
} 
+0

Sie können eine Elternklasse erstellen und sie in Ihren Komponenten erweitern. –

+0

@MadhuRanjan Eine Klasse zu erweitern ist nichts, was ich mit eckigen gesehen habe. Also ich war mir nicht sicher. Ich dachte, ich müsste mit DI gelöst werden. –

+0

Wenn Sie in Typescript arbeiten, überprüfen Sie die [Vererbungsabschnitt] (https://www.typescriptlang.org/docs/handbook/classes.html). – crashmstr

Antwort

3

unter Versuchen,

export class BaseComponent { 
    name: string =""; 
    someCommonFunction(){ 
    return `Method called from Base Component from child ${this.name}` 
    } 
} 

@Component({ 
    selector: 'child-1', 
    template: `{{someCommonFunction()}}` 
}) 
export class ChildComponent1 extends BaseComponent { 
    constructor(){ 
    super(); 
    this.name = "ChildComponent1"; 
    }  
} 

@Component({ 
    selector: 'child-2', 
    template: `{{someCommonFunction()}}` 
}) 
export class ChildComponent2 extends BaseComponent { 
    constructor(){ 
    super(); 
    this.name = "ChildComponent2"; 
    } 
} 

Hier ist die Plunker!!

hoffe, das hilft !!

Verwandte Themen