1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > [Angular TypeScript报错]Cannot assign to read only property ‘outwardcolor‘ of object ‘[object Object]‘

[Angular TypeScript报错]Cannot assign to read only property ‘outwardcolor‘ of object ‘[object Object]‘

时间:2022-04-20 10:00:51

相关推荐

[Angular TypeScript报错]Cannot assign to read only property ‘outwardcolor‘ of object ‘[object Object]‘

事情发生过程

用动态路由从一个组件传一个对象到另一个组件接收时发生的错误

源码:

对象 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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。