2016-11-21 7 views
0

Wie führe ich die Abhängigkeitsinjektion für eine Kindklasse in Angular 2 durch, wenn der Elternteil nicht den Anbieter hat?Abhängigkeitsinjektion in der 2-Kind-Komponente "Angular"

import { NgModule, Component, OnInit} from '@angular/core'; 
import { EntityrecordApi } from '../sdk/services/custom'; 
import { Injectable, Inject } from '@angular/core'; 
import { FormlyFieldSelect } from 'ng2-formly'; 

@Component({ 
    selector: 'formly-field-lookup-select', 
    providers: [EntityrecordApi], 
    template:'<div>Test</div>' 
}) 

export class LookupSelect extends FormlyFieldSelect implements OnInit{ 
    constructor(@Inject(EntityrecordApi) private _EntityrecordApi: EntityrecordApi) { 
    super() 
    } 
    ngOnInit(): void { 
    //Do Something here 
    this._EntityrecordApi.find() 
    } 
} 

FormlyFieldSelect

Im obigen Beispiel, bekomme ich _EntityrecordApi immer als nicht definiert. Können Sie bitte helfen?

Komponentenhierarchie Bild in Augury

enter image description here

+0

Ist Ihr Dienst als '@Injectable()' markiert? Erhalten Sie Fehlermeldungen in der Konsole? – Harangue

+0

Ist auch "EntityrecordApi" in 'providers' Optionen Ihrer' NgModule' Metadaten enthalten? –

+0

ya ist es als @Injectable() markiert und EntityrecordApi wurde in der Provider-Option – ampsar

Antwort

0

Auch wenn die übergeordnete Klasse der Anbieter hatte, würden Sie es nicht. Decorators werden in Angular 2 nicht vererbt.

Sie müssen den Dienst der providers10 der Komponente hinzufügen (wenn Sie eine Instanz des Dienstes pro Instanz der Komponente) möchten. oder das Modul, das diese Komponente enthält (wenn Sie eine Instanz des Dienstes in der gesamten App wünschen).

+0

hi Meligy enthalten, ich habe den "EntityrecordApi" -Dienst den Anbietern der Komponente hinzugefügt, aber es kommt als undefiniert im Konstruktor. – ampsar

+0

Wenn ich die 'extends FormlyFieldSelect' entferne, kann ich den Provider im Konstruktor bekommen. – ampsar

+0

Klingt nach etwas, das man in einem Plunker reproduzieren kann. Könnten Sie ein kleines Beispiel nur für das Injektionsproblem mit Vererbung erstellen? – Meligy

Verwandte Themen