Angular 2 在显示之前渲染单个页面多少次?
How many times does Angular 2 render a single page before showing it?
我正在为我的项目使用 Angular 2。我的模板中有一个简单的 div,它调用我的 .ts 文件中的一个函数,该函数输出一个简单的文本,如下所示:
<div>{{ test() }}</div>
private test(): void {
console.log("Test text");
}
当我加载一个页面时,我多次得到相同的输出,如下所示:
Test text
Test text
Test text
Test text
Test text
这是否意味着 Angular 2 在实际显示模板之前多次渲染模板,因此每次都调用函数?
是它呈现多次,因为 ChangeDetectionStrategy 总是 "Default" 意味着它总是(多次)检查 UI 更新
ChangeDetectionStrategy.OnPush
Use OnPush: OnPush 表示变化检测器的模式将在水合作用期间设置为 CheckOnce。
如果你使用ChangeDetectionStrategy.OnPush那么它只会打印一次
更改检测:ChangeDetectionStrategy.OnPush
https://angular.io/api/core/ChangeDetectionStrategy
https://plnkr.co/edit/lNXNsS?p=preview
Code Snippet
@Component({
changeDetection: ChangeDetectionStrategy.OnPush,
selector: 'my-app',
template: `
<div>
Check Console
<h2>{{print()}}</h2>
</div>
`,
})
export class App {
name:string;
constructor() {
this.name = `Angular! v${VERSION.full}`
console.log("Called Once")
}
print(): void {
console.log("I am printing only one time"):
}
}
Angular 只渲染 AppComponent
及其子组件一次,除非您添加删除 DOM 的部分,然后这些添加的部分将再次渲染。
您遇到的是 Angular 运行相当频繁的更改检测。另见 。
在值绑定中使用函数通常不是一个好主意,因为每次 Angular 运行更改检测时都会调用此类函数。
更喜欢将值分配给 属性 并改为绑定到此 属性。
<div>{{ testVal }}</div>
ngOnInit() {
this.testVal = this.test();
}
private test(): string {
console.log("Test text");
return 'some string';
}
我正在为我的项目使用 Angular 2。我的模板中有一个简单的 div,它调用我的 .ts 文件中的一个函数,该函数输出一个简单的文本,如下所示:
<div>{{ test() }}</div>
private test(): void {
console.log("Test text");
}
当我加载一个页面时,我多次得到相同的输出,如下所示:
Test text
Test text
Test text
Test text
Test text
这是否意味着 Angular 2 在实际显示模板之前多次渲染模板,因此每次都调用函数?
是它呈现多次,因为 ChangeDetectionStrategy 总是 "Default" 意味着它总是(多次)检查 UI 更新
ChangeDetectionStrategy.OnPush Use OnPush: OnPush 表示变化检测器的模式将在水合作用期间设置为 CheckOnce。
如果你使用ChangeDetectionStrategy.OnPush那么它只会打印一次
更改检测:ChangeDetectionStrategy.OnPush
https://angular.io/api/core/ChangeDetectionStrategy
https://plnkr.co/edit/lNXNsS?p=preview
Code Snippet
@Component({
changeDetection: ChangeDetectionStrategy.OnPush,
selector: 'my-app',
template: `
<div>
Check Console
<h2>{{print()}}</h2>
</div>
`,
})
export class App {
name:string;
constructor() {
this.name = `Angular! v${VERSION.full}`
console.log("Called Once")
}
print(): void {
console.log("I am printing only one time"):
}
}
Angular 只渲染 AppComponent
及其子组件一次,除非您添加删除 DOM 的部分,然后这些添加的部分将再次渲染。
您遇到的是 Angular 运行相当频繁的更改检测。另见
在值绑定中使用函数通常不是一个好主意,因为每次 Angular 运行更改检测时都会调用此类函数。
更喜欢将值分配给 属性 并改为绑定到此 属性。
<div>{{ testVal }}</div>
ngOnInit() {
this.testVal = this.test();
}
private test(): string {
console.log("Test text");
return 'some string';
}