Angular2, как использовать объект из одного компонента в другой компонент?

Я использую два различных компонента,

один - sample.ts, другой - testing.ts

export class TestComponent {
 save(){
  console.log('this is a testing file')
  }
}

Можно ли использовать save() в sample.ts?? который находится в testing.ts ->save()??

Если это возможно, кто-нибудь, пожалуйста, помогите мне...

2 ответа

Вы можете сделать ваш метод публичным: public save() { ... } затем импортируйте свой TestComponent в свой SampleComponent, создайте экземпляр TestComponent и вызовите let tc = new TestComponent(); tc.save();

Я поместил бы эту функцию в общий сервис, сделал бы ее инъекционной и использовал бы ее везде.

  @Injectable()

  export class MyService{

   public save(){

     console.log('this is a testing file')

   }
}

В ваших компонентах:

  constructor(private myService:MyService){

    // use it however you want
    myService.save();

  }

И если вы не хотите этого делать, вам нужно отдельно экспортировать только эту функцию:

export function save() {

  console.log('this is a testing file')

}

РЕДАКТИРОВАТЬ:

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

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

Поэтому зайдите в ваш app.ts (возможно) и предоставьте сервис и удалите его из списка поставщиков любых дочерних компонентов.

Другие вопросы по тегам