这就是我现在正在做的,我想知道是否有更好的方法
this.dataService.subscribe(
data => this.data = data,
error => alert('Something went wrong'),
() => this.doSomethingOnCompletion());
Run Code Online (Sandbox Code Playgroud)
但是,如果我没有捕获数据,则可以更改以下三个功能中的第一个:
() => null,
Run Code Online (Sandbox Code Playgroud)
rxjs 4.x的文档对我来说回答得还不够好。版本5.x解释得更少。
那么,判决是什么?当我只需要触发某些事情时,以下错误吗?
this.dataService.subscribe(
() => null,
error => alert('Boom.'),
() => this.doSomethingOnCompletion());
Run Code Online (Sandbox Code Playgroud)
如果我不需要在完成时做点什么,我就把那部分忽略掉。如果我只想检查错误而不做其他事情怎么办?
Nrwl 说在这里问。看来我是第一个了!
我犯傻了。我使用 nx 原理图创建了一个名为 Angular 的项目。如果可能的话,我想重命名命名空间,以便我可以访问我的库,例如:
import {MyLibrary} from '@MyNamespace/my-library/';
Run Code Online (Sandbox Code Playgroud)
代替:
import {MyLibrary} from '../../../../../../../..........';
Run Code Online (Sandbox Code Playgroud)
我尝试更改 angular-cli.json 和 package.json 中的项目名称,但我很确定这不是答案。
此外,nx 不能用作标签,因为它已在其他地方使用。我建议nrwl-nx。
编辑:从头开始。我没有足够的声誉来创建新标签。如果你想成为第一,那就恭喜你了!
我已经看到了一些示例,其中代码将被包装在setTimeout函数中,以避免在没有等待的数据的情况下生成模板/组件.我想使用jQuery bootstrap-multiselect来显示组织列表.
ngOnInit(){
this._panelService.getOrgs()
.subscribe(
orgs => this.orgs = orgs,
error => alert('There was an error connecting to the API'),
() => setTimeout(() => jQuery('#organizations').multiselect(), 0));
}
Run Code Online (Sandbox Code Playgroud)
我也在其他地方使用过它.在这种情况下,我在删除后调用API以触发*ngFor中的更改:
deleteBoard(panelId: number, boardId: number) {
this._boardService.deleteBoard(panelId, boardId)
.subscribe(
boards => this.panel.boards = boards,
error => alert('There was an error contacting the API.'),
() => setTimeout(this._boardService.getAvailableRanks(panelId)
.subscribe(ranks => this.updatedRanks = ranks), 0));
}
Run Code Online (Sandbox Code Playgroud)
除非我使用setTimeout,否则*ngFor不会检测到更改.我错过了什么?
我正在使用beta 14.
angular ×2
angular-cli ×1
jquery ×1
nrwl ×1
nrwl-nx ×1
rxjs ×1
rxjs5 ×1
settimeout ×1
typescript ×1