我有一个包含大量对象的父组件:
export const myWalls: MyWall[] = [
{
sign: 'COTTON CANDY',
photo1: 'assets\\walls.jpg',
photo2: 'assets\\1.jpg',
photo3: 'assets\\2.jpg',
id:1,
mySong: [
{
name: 'firstsong',
cover: 'assets\\1.jpg',
song: 'assets\\audio\\11.mp3',
},
{
name: 'secondsong',
cover: 'assets\\1.jpg',
song: 'assets\\audio\\12.mp3',
},
]
},
{
sign: 'NEON',
photo1: 'assets\\3.jpg',
photo2: 'assets\\4.jpg',
photo3: 'assets\\5.jpg',
id:1,
mySong: [
{
name: 'thirdsong',
cover: 'assets\\1.jpg',
song: 'assets\\audio\\11.mp3',
},
{
name: 'fourthsong',
cover: 'assets\\1.jpg',
song: 'assets\\audio\\11.mp3',
},
]
}
]
每个对象都通过其 id 字段连接到特定的路由。通过获取这个 id,我应该获得对象的其余属性。为此,我在子组件中有一个构造函数。但即使在初始化之后,对象仍然未定义,并且它会破坏接下来的一切。谁能告诉我可能是什么问题吗?
export class FirstInComponent{
public object?: MyWall;
constructor(private route: ActivatedRoute) {
this.route.params.subscribe((params: Params) => {
this.object = myWalls[params['id']-1];
console.log(typeof this.object)
})
}
我尝试使用 OnInit 而不是构造函数,但没有任何变化
public object?: MyWall;
constructor(private route: ActivatedRoute) {}
ngOnInit(): void {
this.route.params.subscribe((params: Params) => {
this.object = myWalls[params['id']-1];
console.log(typeof this.object)
})
}
我认为
id
字段存储为字符串。您需要使用 id
将
number
转换为
+
public object?: MyWall;
constructor(private route: ActivatedRoute) {}
ngOnInit(): void {
this.route.params.subscribe((params: Params) => {
const id: number = +(params?.['id'] || 0);
this.object = myWalls[id - 1];
console.log(typeof this.object)
})
}
console.log(1+1);
console.log('1'+1);