Можно ли передать значение @ Input в приложение.компонент в угловой 2?


Я использую ASP.Net чтобы отобразить мое приложение Angular 2, и единственная страница RAZOR, которая у меня есть, - это _Layout.cshtml и я хотели бы иметь возможность передавать некоторые данные init из RAZOR в мой загрузочный компонент, но это, кажется, не работает.

В моем _Layout.cshtml, у меня есть следующее:

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

И в моем приложении.деталь.ТС, у меня есть:

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;
}

Моя тестовая переменная пуста. Есть ли другой способ сделать это, или это просто невозможно?

1   9   2016-07-14 22:39:49

1 ответ:

Невозможно использовать входные данные для основных компонентов (загрузочных). Вам нужно получить атрибут непосредственно из DOM:

@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');
  }
}