从另一个组件

时间:2017-03-08 08:53:03

标签: javascript arrays angular typescript model

我有一个简单的网络应用程序,它有一个应用程序模型和几个组件。当我更新我的模型中的数组时,正在使用该模型的视图不会更新。当我控制日志模型数组时,我可以看到正在更新的模型而不是视图。任何帮助将不胜感激。下面请看一下我目前的情况。

overview.component.ts

import { Component, OnInit } from '@angular/core';
import { AppModel } from '../models/app-model';

@Component({
  selector: 'app-overview',
  templateUrl: './overview.component.html',
  providers: [AppModel]
})
export class OverviewComponent implements OnInit {
  constructor(public AppModel:AppModel) { }
  ngOnInit() {}
}

应用-model.ts

export class AppModel {
  myArray:Array<any> = [];
  constructor(){}
}

overview.component.html (这是模型更新时未更新的视图)

<td *ngFor="let dataItem of AppModel.myArray">
  <span{{ dataItem }}</span>
</td>

这是我从其他组件

更新应用模型中的数组的方法
import { Component, OnInit } from '@angular/core';
import { Http, Response } from '@angular/http';
import { AppService } from '../services/app.service';
import { AppModel } from '../models/app-model';

@Component({
 selector: 'other-component',
 templateUrl: './other-component.component.html',
 providers: [AppService, AppModel]
})

export class OtherComponent implements OnInit {

constructor(private http: Http, public AppService:AppService,public AppModel:AppModel) {}

private updateModel() :void {
  this.AppModel.myArray = someArray;
}

ngOnInit() {}
}

1 个答案:

答案 0 :(得分:1)

对于服务,您可以获得每个提供商的实例 如果向组件添加提供程序,则会获得与组件实例一样多的服务实例。只有组件本身及其子组件才能从组件中注入提供程序 您需要在公共父组件上或// serve all static files from the /public folder app.use(express.static(path.join(__dirname, 'public'))) // serve index.html for all routes app.get('*', (req, res) => { res.sendFile(path.join(__dirname, 'public/index.html')) }) 中提供服务 只有@NgModule()中的提供者才能获得整个应用程序的单个实例