繁体   English   中英

数组正在更新,但视图不在Angular 2中

[英]Array being updated but view is not in Angular 2

我有一个组件,用于存储要在列表中显示的服务器阵列。 组件从服务订阅可观察项。

这是组件代码:

import {Client} from '../../connectionService/client.service';


@Component({
    templateUrl: 'build/pages/page1/page1.html',
    providers: [Client]
})
export class Page1 {
    servers : any;

    constructor(private client: Client) {
      this.servers = [];
      this.client._myServers.subscribe((newServer: any) => {
        console.log("new server!", newServer);
        this.servers.push(newServer);
      });
}

风景:

  <ul>
    <li *ngFor='#item of (servers)'>
     Name : {{item.name}}
  </li>
</ul>

服务:

import { Injectable } from '@angular/core';
import {Observable}     from 'rxjs/Observable';
import {Subject}  from 'rxjs/Subject';


    @Injectable()
    export class Client {
      private serversSubject: Subject<any>;
      _myServers : Observable<ServerHandler>;

    constructor() {
        this.serversSubject = new Subject<any>();
        this._myServers = this.serversSubject.asObservable();
    }

...

当我发现服务器(在与上述相同的服务中:

      this.serversSubject.next({"name": result.name, "adress": result.address});

“新服务器!” 被打印,并且服务器在组件中进行了更新, 但视图未显示新项 当我进出页面时,将显示新服务器。

预先感谢,马库斯

这是一个普遍的问题。 您的蓝牙库可能在Angulars区域之外运行,并且当在Angulars区域之外运行的代码更新模型时,不会调用Angulars更改检测。

有多种策略可以手动调用更改检测。 手动触发Angular2更改检测

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM