2016-12-29 2 views
0

In meiner Angular 2 App muss ich ein Array von einer Komponente zur anderen übergeben. Ich habe eine Komponente SystemDynamicsComponent genannt, die sdFactors ein Array aussetzt:Ausnahme self.context.XXX.subscribe ist keine Funktion

@Component({ 
    selector: "system-dynamics", 
    templateUrl: "/app/component/main/template/system-dynamics.html" 
}) 

export class SystemDynamicsComponent implements OnInit { 
    private dialogDisplayed: boolean = false; 
    @Output() sdFactors: any[] = []; 

In der Komponente mit dem Namen InputModuleComponent ich diesen Wert lesen müssen Sie wie folgt vor:

Vorlage:

<system-dynamics (sdFactors)="this.sdFactors"></system-dynamics> 

Komponente:

export class InputModuleComponent implements OnInit { 
... 
sdFactors: any[] = []; 

Wann Starten der Eingangsmodulkomponente, bekomme ich diese Fehlermeldung von Angular: TypeError: self.context.sdFactors.subscribe is not a function at Wrapper_SystemDynamicsComponent.subscribe (wrapper.ngfactory.js:38) at View_InputModuleComponent6.createInternal (component.ngfactory.js:3103) at View_InputModuleComponent6.AppView.create (core.umd.js:12262) at View_InputModuleComponent6.DebugAppView.create (core.umd.js:12666) at TemplateRef_.createEmbeddedView (core.umd.js:9320) at ViewContainerRef_.createEmbeddedView (core.umd.js:9552)

Irgendwelche Ideen, die ich vermisse?

Antwort

2

Versuchen Sie, diese

<system-dynamics (sdFactors)="sdFactors"></system-dynamics> 

statt

<system-dynamics (sdFactors)="this.sdFactors"></system-dynamics> 

Sie nicht für die Bindung this in der Vorlage hinzufügen müssen. Auf Variablen derselben Klasse kann in der Vorlage ohne this zugegriffen werden.

aktualisieren

@output für Ereignisbindung verwendet wird, nicht für Immobilien-Bindung, haben Sie @input für PDem Array oder einem variablen Wert verwenden, um diese verwenden wie diese

<system-dynamics [sdFactors]="sdFactors"></system-dynamics> 

und in Sie Komponente wie folgt

@Component({ 
    selector: "system-dynamics", 
    templateUrl: "/app/component/main/template/system-dynamics.html" 
}) 

export class SystemDynamicsComponent implements OnInit { 
    private dialogDisplayed: boolean = false; 
    @Input() sdFactors: any[] = []; 
+0

ich es geändert, wie Sie (' ') vorgeschlagen, aber die Frage bleibt. – Emdee

+0

siehe mein Update –

+0

Problem gelöst! Ich benutze '@ Input' jetzt wie du vorgeschlagen hast. – Emdee

Verwandte Themen