我正在尝试在路由器插座内显示加载屏幕,直到收到数据.
这是我在index.html中的代码
<root>
<div class="app-content text-center">
<div class="app-content-body" >
<div class="loader_div" >
<div class="loader"></div>
</div>
</div>
</div>
</root>
Run Code Online (Sandbox Code Playgroud)
它按预期工作,但当我尝试在内部执行相同的代码时,即使在屏幕加载后,它仍保留在屏幕内.
一种可能的解决方案是我可以订阅路由器事件并使用instanceof NavigationStart和NavigationEnd.并使用ngIf从routeroutlet中删除DOM.
有没有其他更简单的方法来解决这个问题?
编辑1:在路由器事件中订阅后,我意识到这不是明智的决定.因为在多个嵌套路由器插座的情况下它将在整个页面中显示刷新屏幕而不是子路由器插座所在的部分.当我检查DOM时,<ng-component>不会替换<router-outlet>它,而是在完成标记后加载它.(</router-outlet>)是否是Angular2的错误?
我正在调用一个函数来复制*ngFor循环中的数据,如下所示.
<li (click)="replicateTicket(data);"> Replicate</li>
Run Code Online (Sandbox Code Playgroud)
在函数内部,我正在更新变量的名称和ID,并将其推送到数组中.(在给出的例子中,我没有推动数据更生动地解释行为.
replicateTicket(data:any){
data.name = data.name + ' (Replicated)';
console.log(this.ticketList[this.ticketList.length-1].id);
data.id = 0;
console.log(this.ticketList[this.ticketList.length-1].id);
}
Run Code Online (Sandbox Code Playgroud)
我想要的是如果原始数据的id是5而不是它不应该变为0.
运行plunker
点击458 abc.
它应该只更新新数据而不是当前数据.
难道我做错了什么?
它是否有助于减少加载时间?(例如只将当前模块加载到客户端的设备?)
我的理解是......
typescript angular-module angular2-routing angular2-modules angular