angular - *ng 直到点击才更新

标签 angular typescript

我创建了一个带有 *ngFor 的表,用于显示来自 Web 请求的数据。这是模板代码:

...
  <tr *ngFor="let task of tasks">
    <td>{{task.ID}}</td>
    <td><a (click)="openTaskArea(task.TaskType0.ID)" class="viewLink">{{task.TaskType0.Title}}</a></td>
    <td><a (click)="editTask(task.ID)" class="viewLink"></a></td>
    <td><a (click)="openTask(task.ID)" class="viewLink">{{task.Title}}</a></td>
    <td>
      <ng-container *ngIf="task.AssignedTo">{{task.AssignedTo.Title}}</ng-container>
    </td>
  </tr>
...

此 Web 请求在加载时触发,并且在关闭允许创建新项目的模式时触发。

这是获取此数据的函数:

getTasks() {
this.http.get(`https://example.com/_api/web/lists/getbytitle('Tasks')/items`).subscribe(data => {
  // console.log(data['value'])
  this.tasks = data['value']
  console.log(this.tasks)
})
}

当使用以下函数关闭模式时会触发此函数:

(function() {
  this.getTasks();
}).bind(this);

绑定(bind) this 是必需的,因为它的上下文正在丢失。这是 this question 的推荐解决方案.

请求正确完成,因为我可以记录 this.tasks 但是,在我单击表中的链接之前,DOM 不会更新。

我该如何解决这个问题?

最佳答案

您可以尝试手动调用 detectChanges 来进行渲染,

import { ChangeDetectorRef } from 'angular/core';

constructor(private chRef: ChangeDetectorRef){
}

然后使用:

chRef.detectChanges(); // whenever you need to force update view

关于angular - *ng 直到点击才更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54565478/

相关文章:

angular - 在加载第一个组件之前在 Angular 中显示预加载器

Angular 2/ typescript : @Input/@output or input/output?

javascript - Angular2 RC5导入第3方JS库: Showdown

angular - Primeng p-dropdown onChange 获取对象的值

typescript - 如何计算 vscode 扩展中文件夹中的文件数量?

javascript - TSC 正在根据 tsconfig.json 文件的方向编译 node_modules 和类型声明文件

Typescript 等同于 C++ 中的 decltype?

angular - 如何避免使用 View 中的方法触发组件中的更改检测?

javascript - Typescript:使 tsconfig 发出一个文件夹但不发出另一个文件夹

javascript - 变量在 fetch 中更改但在函数外部未更改