Как передать тот же экземпляр класса другому классу в typescript?

#angular #typescript

#angular #typescript

Вопрос:

У меня есть класс ChildClass.ts , который обладает следующими свойствами.

 name: String;
address: String;
  

Этот класс действует как свойство в MainClass.ts следующим образом.

 childClass: ChildClass;
mobNo: String;
  

Теперь в файле компонента A.ts я устанавливаю значение name amp; address , сначала объявляя переменную

@Input chCLass: ChildClass и создание экземпляра класса в onInit()

а затем просто выполнить

 this.chClass.name = 'FirstName LastName';
  

Теперь мне также нужно установить дочерний класс в MainClass, но я не хочу делать это в этом компоненте, поскольку есть много других элементов пользовательского интерфейса, которые необходимо заполнить, и только тогда будет лучше установить его в MainClass.

Итак, есть другой файл компонента ( B.ts ), в который я хочу установить это childClass в Mainclass .

Я попытался создать экземпляр MainClass и объявить ChildClass в компоненте, но когда я установил значение, подобное

 B.ts

cCLass: ChildClass;
mClass: MainClass;

onInit(){
 this.mClass = new MainClass();
}

this.mClass.childClass = this.cCLass;
  

Но печатать это.mClass в консоли выдает пустой дочерний класс.

У меня создалось впечатление, что как только значение задано в ChildClass в A.ts , я могу просто присвоить его MainClass, даже если экземпляр MainClass находится в B.ts.

Я создал Stackblitz для черновой идеи.

значение переменных дочернего класса присваивается в A.ts, и этот объект дочернего класса должен быть присвоен MainClass в B.ts

 stackblitz.com/edit/angular-7-master-xip1sm?file=src/app/B.ts
  

Кто-нибудь может помочь мне разобраться, как присвоить свойству ChildClass значение MainClass в B.ts , в то время как значения для ChildClass заданы в A.ts ?

Комментарии:

1. очень сложно понять, чего вы пытаетесь достичь. Возможно, вы можете создать stackblitz, чтобы прояснить вашу проблему?

2. @PoulKruijt Я создал stackblitz для вас, хотя это не работает, я надеюсь, вы получите приблизительное представление. Я установил значения дочернего класса в A.ts, и этот дочерний класс должен быть присвоен MainClass в B.ts stackblitz.com/edit/angular-7-master-xip1sm?file=src/app/B.ts

3. Я бы рекомендовал на самом деле просто заполнить это mainclass.ts и передать его компонентам, которые должны изменять определенные свойства (используя двустороннюю привязку). В качестве альтернативы вы могли бы создать службу, которая содержит класс, и получить к нему доступ из компонентов.

4. MainClass имеет много дочерних классов, и все дочерние классы заполняются из разных классов компонентов. Итак, как только я заполняю дочерний класс из компонента, а затем заполняю другой дочерний класс из другого компонента, я могу видеть только последние значения дочернего класса, если я печатаю MainClass в консоли.