2016-07-14 4 views
9

Ich benutze ASP.Net, um meine Angular 2-Anwendung zu rendern, und die einzige RAZOR-Seite, die ich habe, ist _Layout.cshtml und ich würde gerne einige Init-Daten aus RAZOR in meine Bootstrap-Komponente übertragen können, aber es tut nicht Es scheint nicht zu funktionieren.Ist es möglich, in Angular 2 einen @Input-Wert an app.component zu übergeben?

In meinem _Layout.cshtml, ich habe folgendes:

<my-app test="abc"></my-app> 

und in meinem app.component.ts, ich habe:

import { Component, Input } from "@angular/core"; 

@Component({ 
    selector: 'my-app', 
    template: "<div id='mainBody'>Test:{{test}}</div>", 
    directives: [MenuBarComponent, ROUTER_DIRECTIVES] 
}) 
export class AppComponent { 
    @Input() test; 
} 

Meine Testvariable leer ist. Gibt es einen anderen Weg, oder ist es einfach nicht möglich?

+0

http://stackoverflow.com/questions/37337185/passing-asp-net-server-parameters-to-angular-2-app/37384405#37384405 – yurzui

Antwort

9

Es ist nicht möglich, Eingänge für Hauptkomponenten (Bootstrap) zu verwenden. Sie müssen das Attribut direkt aus dem DOM erhalten:

@Component({ 
    selector: 'my-app', 
    template: "<div id='mainBody'>Test:{{test}}</div>", 
    directives: [MenuBarComponent, ROUTER_DIRECTIVES] 
}) 
export class AppComponent { 
    constructor(private elementRef:ElementRef) { 
    this.test = this.elementRef.nativeElement.getAttribute('test'); 
    } 
} 
+0

Wenn ich ein globales JavaScript-Objekt in _Layout erstellen möchte, wie würde ich darauf in meinem TypeScript-Konstruktor zugreifen? – Scottie

+0

Sie würden es als Anbieter in Ihrem NgModule hinzufügen über eine [InjectionToken] (http://angular.io/guide/dependency-injection-in-action#injectiontok de) –

Verwandte Themen