Angular2 RC1服务正在失去启动的属性

时间:2016-05-07 17:44:36

标签: angular angular2-services

我正在开发一个Angular2应用程序,这个工作正常,直到RC1出来(虽然它从未在RC0中测试过)。

基本上我有一个cacheService类,它在“remoteService”类上订阅Subjects。任何组件都引用cacheService.players而不是向remoteService发出请求。我这样做是因为它还将应用程序缓存层与remoteService分离,允许cacheService缓存,而remoteService访问远程服务。

但是,在实例化组件时,会调用cacheService构造函数,初始化players []数组。

然而,当remoteService发出一个播放器时,subscribe中的函数无法访问players []数组 - 它是未初始化的。

同样,这在Beta中有效,但在RC中没有。

我错过了什么吗?

缓存服务(简化)

@Injectable()
export class cacheService {
   public players: any[];  

   constructor(private _service: remoteService) {
           this.players = [];

           _service.players.subscribe((p: player) => {
               if (this.players[p.id] && this.players[p.id].score)
                   p.score = this.players[p.id].score;

               this.players[p.id] = p;
           });
   }
}

组件(再次简化)

@Component({
    selector: 'player-view',
    templateUrl: '/Template/PlayerView'
})
export class PlayerView implements OnInit {
    public playerCache = any[];

    constructor(private _cacheService: cacheService) {
        this.playerCache = [];
    }

    getDraftData() {
            this._cacheService.getPlayers(league.id);
            this.playerCache = this._cacheService.players;
        }
    }

    ngOnInit() {
        this.getDraftData();
    }
}

编辑:纠正转录错误。

2 个答案:

答案 0 :(得分:0)

此行无效

this.playerCache = this._dataService.players;

服务引用为this._cacheService。没有this._dataServicedataService(仍然不同 - 没有_)是this._cacheService

的类型

答案 1 :(得分:0)

我发现了这个问题。我有一条线正在访问播放器阵列的属性而没有被检查。

例如:

if (this.players[p.id]) 
    temp = this.players[p.id].score

this.players[p.id].score = temp

当玩家[p.id]未被实例化时,问题就出现了。