事情发生过程
用动态路由从一个组件传一个对象到另一个组件接收时发生的错误
源码:
对象 selected
export interface selected {
model?: string;
outwardcolor?: string;
outwardwheel?: string;
interior?: string;
features?: string;
pay?: string;
}
接收方的ts文件(只有重点部分)
public chosen: selected = <any>{};
constructor(private router: Router, private arouter: ActivatedRoute) { }
ngOnInit(): void {
this.arouter.params.subscribe((data: selected) =>{
this.chosen = data;
});
public selectColor(color: string){
this.chosen.outwardcolor = color;
}
当我调用这个函数时 问题就来了
这个问题的玄学之处在于 在初始化赋值后 初始化结束前 它还是个对象
this.chosen.outwardcolor = 'color';
这还是成立的
解决方法就是
在给它设值之前给它加个{}
public selectColor(color: string){
let o ={};
let newchosen = Object.assign(o, this.chosen);
this.newchosen.outwardcolor = color;
}
此时 这个newchosen 又重新变成了对象
这个时候在给他赋值就没问题了
newchosen.outwarcolor = color ;
或者在观察者接收对象时进行修改
ngOnInit(): void {
this.arouter.params.subscribe((data: selected) =>{
let o ={};
this.chosen = Object.assign(o, data);
});
}
问题解决
引用文章: Angular的Object.assign