我想在Angular 5应用程序中使用异步管道。我正在控制器中定义一个带有用户的Observable。当我使用异步管道在模板中展开它时,Angular语言服务无法识别类型UserModel
并且似乎正在使用any
。
我的问题:如何让异步管道与类型一起使用?
根据this post它应该有用。
Angular: v5.5.1
Angular Language Service: v5.5.1
WebStorm: 2017.3.2
什么行不通:
@Controller({})
export class MyController {
users: Observable<UserModel[]>
constructor() { this.users = userService.get() }
}
模板:
<div *ngFor="let user in users | async">{{ user.firstName + user.missing }}</div>
我当前的替代
@Controller({})
export class MyController extends OnDestroy {
private alive = true
users: UserModel[]
constructor() {
userService
.get()
.takeWhile(() => this.alive())
.subscribe(users => this.users = users)
}
ngOnDestroy() { this.alive = false; }
}
模板:
<div *ngFor="let user in users">{{ user.firstName + user.missing }}</div>
编辑: userService.get()
get() { return this.http.get<UserModel[]>('api/users') )}
EDIT2:添加了一个plunkr。要明确 - 我希望构建错误和自动完成功能适用于user
上的属性。所以:user.name
应该可以正常工作,但user.missing
应该抛出构建错误。
https://plnkr.co/edit/i9ggczzIFPEpP30KrcmE?p=preview