2

当我将“禁用”指令绑定到包含console.log()的函数时,预渲染不起作用。

<button [disabled]="!isValid()"></button>

我的功能

 public isValid(){
     console.log("isvalid");
     return true;
 }

从我的视觉工作室输出控制台,我得到了这个:

 Microsoft.AspNetCore.NodeServices: Information: isvalid
 Microsoft.AspNetCore.NodeServices: Information: isvalid
 Microsoft.AspNetCore.NodeServices: Information: isvalid
 ..... (the same infinite loop message) ............

如果我删除console.log,预渲染工作,但我想进程继续检查按钮是否有效。

我的包版本

"angular2-platform-node": "2.1.0-rc.1",
"angular2-universal": "2.1.0-rc.1",
"angular2-universal-patch": "0.2.1",
"angular2-universal-polyfills": "2.1.0-rc.1",
"aspnet-prerendering": "2.0.3",

Microsoft.AspNetCore.SpaServices : 1.1.0;
Microsoft.AspNetCore.NodeServices : 1.1.0;
4

1 回答 1

1

问题是,当您在模板中调用方法时,每次运行更改检测时都会调用它,这种情况经常发生。所以这实际上不是一个无限循环,Angular 只是在每次更改检测时调用这个方法。

您可以通过处理组件中的逻辑,将其存储在变量中并在模板中使用该变量来解决此问题。

于 2017-11-17T06:48:31.800 回答