我不确定为什么会收到此错误消息。
我已经在此问题上检查了SO线程,但大多数似乎都试图访问未定义数组上的属性。
我不认为这是我的问题。
这是我收到此错误的代码。
addGizmo() {
let gizmo = new gizmo();
this.gizmoSubject.next(gizmo);
let dialogEdit = this.dialog.open(DialogGizmoAddEdit,
{
width: "300px",
data: { gizmo: this.gizmoSubject.getValue(), inEditMode: false },
});
dialogEdit.afterClosed().subscribe(x => {
if (x !== false) {
this.loadGizmos();
this.dataCatalogService.addGizmo(x)
.subscribe(
() => this.loadGizmos(),
error => this.handleError(error)
);
}
});
};
如果需要,我可以发布更多代码,但是“ addGizmo”方法调用我的API会将gizmo添加到数据库中,并返回一个字符串。我已经在Angular的内部和外部测试过该API,但在那里没有发现问题。
subscribe方法中似乎发生了错误。到那时,它已经将Gizmo添加到了DB中。
单步执行代码,我再也看不到loadGizmo的调用。
Angular Setup:
Angular CLI: 6.0.8
Node: 10.5.0
OS: win32 x64
Angular: 6.0.6
... animations, common, compiler, compiler-cli, core, forms
... http, language-service, platform-browser
... platform-browser-dynamic, platform-server, router
Package Version
-----------------------------------------------------------
@angular-devkit/architect 0.6.8
@angular-devkit/build-angular 0.6.8
@angular-devkit/build-optimizer 0.6.8
@angular-devkit/core 0.6.8
@angular-devkit/schematics 0.6.8
@angular/cdk 6.3.1
@angular/cli 6.0.8
@angular/material 6.3.1
@schematics/angular 0.6.8
@schematics/update 0.6.8
rxjs 6.2.1
typescript 2.7.2
webpack 4.12.1
答案 0 :(得分:0)
x
可能不确定。
console.log(undefined !== false);
// prints true
因为在您的编码示例中,没有地方可以读取属性0
或使用数组访问器。该错误发生在其他地方。
编写if(x !== false)
时与if(x)
的逻辑不同。
答案 1 :(得分:0)
该问题归因于API。即使它返回的状态代码值为200,但我的拦截器在响应中捕获了以下错误。
Unexpected token d in JSON at position 0
这与以下事实有关:我正在将主体中的json发送到API,并且似乎在假定响应也应该为json,在这种情况下,它正在返回字符串。
我不确定该如何处理,但是如果我不明白,可以提出另一个问题。