Angular6 JSON - 元素“...未定义”
Angular6 JSON - element "...is not defined"
我已经为我的 Angular 6 个应用创建了入门词典...
import { Injectable } from "@angular/core";
@Injectable()
export class Languages {
//template (in English)
public dialect = {
"Vocab": [{
"Pg1": {
"tag1": "my first string",
"tag2": "my second string",
"tag3": "my third string"
}
}, {
"Pg2": {
"tag1": "my fourth string",
"tag2": "my fifth string",
"tag3": "my sixth string"
}
}, {
"Pg3": {
"tag1": "my seventh string",
"tag2": "my eighth string",
"tag3": "my nineth string"
}
}, ]
}
}
当我在调用组件中键入此内容时...
console.log(this.languages.dialect.Vocab[0].Pg1.ta
...它会自动完成我为我选择的标签——在本例中我 select "tag2"。所以我知道一切正常。当我 运行 应用程序时,控制台显示字符串 "my second string".
一切顺利
但是...当我回溯并键入 "Vocab[0].Pg2.ta" 时,它仍然会为我自动完成,但是当我选择 Pg1 以外的任何值时,我会收到以下错误...
ERROR TypeError: "this.languages.dialect.Vocab[0].Pg2 is undefined"
IDE 中没有错误显示,应用编译正常。我做错了什么?
尝试this.languages.dialect.Vocab[1].Pg2
您的 Pg2
文档是父数组的第二个元素。
this.languages.dialect.Vocab[0].Pg2
必须是 this.languages.dialect.Vocab[1].Pg2
.
您可以像这样重写代码以便于访问:
// this.languages.dialect.Vocab.Pg2
public dialect = {
"Vocab": {
"Pg1": {
"tag1": "my first string",
"tag2": "my second string",
"tag3": "my third string"
}, "Pg2": {
"tag1": "my fourth string",
"tag2": "my fifth string",
"tag3": "my sixth string"
}, "Pg3": {
"tag1": "my seventh string",
"tag2": "my eighth string",
"tag3": "my nineth string"
}
}
}
把你的方言改成这个
//template (in English)
public dialect = {
"Vocab": [{
"Pg1": {
"tag1": "my first string",
"tag2": "my second string",
"tag3": "my third string"
},
"Pg2": {
"tag1": "my fourth string",
"tag2": "my fifth string",
"tag3": "my sixth string"
},
"Pg3": {
"tag1": "my seventh string",
"tag2": "my eighth string",
"tag3": "my nineth string"
}
} ];
或使用
this.languages.dialect.Vocab[1].Pg2
我已经为我的 Angular 6 个应用创建了入门词典...
import { Injectable } from "@angular/core";
@Injectable()
export class Languages {
//template (in English)
public dialect = {
"Vocab": [{
"Pg1": {
"tag1": "my first string",
"tag2": "my second string",
"tag3": "my third string"
}
}, {
"Pg2": {
"tag1": "my fourth string",
"tag2": "my fifth string",
"tag3": "my sixth string"
}
}, {
"Pg3": {
"tag1": "my seventh string",
"tag2": "my eighth string",
"tag3": "my nineth string"
}
}, ]
}
}
当我在调用组件中键入此内容时...
console.log(this.languages.dialect.Vocab[0].Pg1.ta
...它会自动完成我为我选择的标签——在本例中我 select "tag2"。所以我知道一切正常。当我 运行 应用程序时,控制台显示字符串 "my second string".
一切顺利
但是...当我回溯并键入 "Vocab[0].Pg2.ta" 时,它仍然会为我自动完成,但是当我选择 Pg1 以外的任何值时,我会收到以下错误...
ERROR TypeError: "this.languages.dialect.Vocab[0].Pg2 is undefined"
IDE 中没有错误显示,应用编译正常。我做错了什么?
尝试this.languages.dialect.Vocab[1].Pg2
您的 Pg2
文档是父数组的第二个元素。
this.languages.dialect.Vocab[0].Pg2
必须是 this.languages.dialect.Vocab[1].Pg2
.
您可以像这样重写代码以便于访问:
// this.languages.dialect.Vocab.Pg2
public dialect = {
"Vocab": {
"Pg1": {
"tag1": "my first string",
"tag2": "my second string",
"tag3": "my third string"
}, "Pg2": {
"tag1": "my fourth string",
"tag2": "my fifth string",
"tag3": "my sixth string"
}, "Pg3": {
"tag1": "my seventh string",
"tag2": "my eighth string",
"tag3": "my nineth string"
}
}
}
把你的方言改成这个
//template (in English)
public dialect = {
"Vocab": [{
"Pg1": {
"tag1": "my first string",
"tag2": "my second string",
"tag3": "my third string"
},
"Pg2": {
"tag1": "my fourth string",
"tag2": "my fifth string",
"tag3": "my sixth string"
},
"Pg3": {
"tag1": "my seventh string",
"tag2": "my eighth string",
"tag3": "my nineth string"
}
} ];
或使用
this.languages.dialect.Vocab[1].Pg2