使用Angular 5的另一个模板中的字段

时间:2018-02-20 16:24:21

标签: angular angular5

我有一个组件类,我在点击时存储数据。如果单击该按钮,我将数据存储在空数组中。 clickedData = []

我需要在不同的模板中使用此 clickedData 。同 <div *ngIf ="clickedData">。怎么办?

1 个答案:

答案 0 :(得分:2)

1)您必须为其使用共享服务。

<强> sharedService.ts

export class sharedservice(){
  public clickData: any[] = [];

  store(data){
    this.clickData=data;
  }

  getData(){
    return this.clickData;
  }
}

2)导入&amp;在根模块中注册服务。

import {sharedservice} from 'relativepath';

  NgModule({
     imports:[...]
     ...
     providers: [sharedservice]
  })

3)将服务注入目标组件。

import {sharedservice} from 'relativepath';

export class AppComponent{
   constructor(private ss: sharedservice){}
}

4)如图所示在模板中使用ss变量(例如appcomponent.html)

   <button (click)="ss.store(whatever_data_you_want_to_store)"> save </button>

5)在其他组件html中,使用如下,

<div *ngFor="let item of ss.getData()">...</div> //don't forget to inject into constrictor