将参数传递到app组件

时间:2017-01-11 14:23:13

标签: asp.net-mvc angular typescript

如何将静态数据提供给我的应用组件?我想在组件初始化期间使用数据,有点像Angular 1.x

中的ngInit

这是我尝试过的:

MyView.cshtml

<some-viewing-app [workflows]="@Json.Encode(ViewBag.Workflows)"></some-viewing-app>

<some-viewing-app workflows="@Json.Encode(ViewBag.Workflows)"></some-viewing-app>

SomeViewingAppComponent.ts

export interface IWorkflowMap {
  [id: number]: string;
}

@Component({
  selector: 'some-viewing-app',
  providers: [...],
  template: `...`,
})
export class AppComponent {
  @Input()
  workflows: IWorkflowMap;

  ngOnInit() {
    this.leadApiService.workflows = this.workflows; // == undefined! :(
  }
}

我也尝试从构造函数中读取工作流,结果相同。我更喜欢这种解决方案而不是使用AJAX获取静态。

1 个答案:

答案 0 :(得分:2)

我&#34;解决了#34;它使用 ElementRef 数据集属性。

View.cshtml

<app data-workflows="@Json.Encode(ViewBag.Workflows)"></app>

app.component.ts

@Component({...})
export class AppComponent {
    constructor(rootElement: ElementRef) {
        workflows = JSON.parse(rootElement.nativeElement.dataset['workflows']);
    }
}