【发布时间】:2019-07-17 16:47:33
【问题描述】:
我有一个名为 Task 的模型类。在其中,我通过创建一个返回 observable 的函数来获取运行时间...
public getRunningTime(): Observable<number> {
const runningTimeObservable = new Observable<number>(observer => {
setInterval(() => {
if (this.isActive) {
const currentTime = new Date().getTime();
observer.next(currentTime - this.startTime);
}
observer.next(this.endTime - this.startTime);
}, 5000);
});
return runningTimeObservable;
}
我将此任务模型绑定到一个名为 TaskListComponent 的组件。该组件保留一个包含每个任务的对象。
export class TaskListComponent {
tasks: object;
constructor(
private taskRepositoryService: TaskRepositoryServiceService,
private taskFactoryService: TaskFactoryService,
private taskInputDialog: MatDialog) {
this.tasks = taskRepositoryService.getAllTasks();
}
在模板中我使用 ngFor 来迭代。
<ul>
<li *ngFor="let task of tasks | keyvalue">
{{task.value._name}} - {{task.value._color}} <span *ngIf="task.value.startTime">- {{task.value.getRunningTime() | async}}</span>
<button mat-button color="warn" (click)="removeTask(task.value)">Remove</button>
<button mat-button (click)="updateTask(task.value)">Update</button>
<button mat-button (click)="startTask(task)">Start</button>
</li>
</ul>
我正在尝试使用{{task.value.getRunningTime() | async}} 每 5 秒显示和更新一次运行时间,但它似乎只是在视图上不渲染任何内容。
有什么帮助吗?我不认为我在做这个可观察的正确......但我不确定如何在我的任务模型上创建一个动态值......在视图中不断更新。
【问题讨论】:
标签: javascript angular typescript rxjs