Я пытаюсь реорганизовать свой код, помещая методы общих компонентов в общую службу, однако я не уверен, почему не могу переписать свойство объекта publi c компонента, переданное службе, хотя я По-видимому, можно изменять определенные c свойства объекта.
Для уточнения c это не работает:
Компонент:
public data: any;
ngOnInit(): void {
loadData(this.data);
console.log(this.data); // <-- returns undefined
}
Метод обслуживания:
loadData(data) {
data = {test:'test'};
}
ОДНАКО, если я передал объект типа {test: 'test'} службе и просто изменил его в службе (например, set data.test = 'test2'), который, кажется, работает ... компонент будет иметь измененное значение, как я и ожидал.
Мой вопрос: почему я не могу присвоить новый объект объекту, переданному службе, учитывая, что объекты предположительно передаются по ссылке? angular делает что-то для защиты свойства компонента от изменения, и если да, то может ли оно быть пропущено?
Кстати, я понимаю, что мог бы просто вернуть значение из loadData и выполнить присваивание в компоненте, однако это не помогает с более сложными методами, которые я хочу реорганизовать, в которых может быть несколько объектов, переданных службе и измененных в методе службы.
Любые идеи приветствуются.
-S. Arora