小编YAS*_*AVE的帖子

在延迟加载的模块初始化Angular2之前在路由器插座内加载屏幕

我正在尝试在路由器插座内显示加载屏幕,直到收到数据.

这是我在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的错误?

javascript angular2-routing angular

5
推荐指数
0
解决办法
226
查看次数

Angular2,Data也保持绑定到函数内部的原始变量

我正在调用一个函数来复制*ngFor循环中的数据,如下所示.

<li (click)="replicateTicket(data);">&nbsp; 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.

  1. 运行plunker

  2. 点击458 abc.

  3. 它应该只更新新数据而不是当前数据.

难道我做错了什么?

arrays data-binding angular

3
推荐指数
1
解决办法
60
查看次数

除了设计简单之外,在Angular2中使用多个模块有什么好处?

它是否有助于减少加载时间?(例如只将当前模块加载到客户端的设备?)

我的理解是......

  • 它会增加服务器和客户端之间的请求数量吗?
  • 它会增加代码的复杂性.(因为你需要照顾
  • 导入和导出模块,并特别注意路由)

typescript angular-module angular2-routing angular2-modules angular

2
推荐指数
1
解决办法
1309
查看次数