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 (возможно) и предоставьте сервис и удалите его из списка поставщиков любых дочерних компонентов.