Угловой обмен данными между двумя компонентами

Я пытаюсь передать значение из одной службы в другой компонент, но результат значения отображается как неопределенное

Injectable()
export class TestService {
 url:string;

someExample(){
this.url="Hello";
}



@Component({
  selector: 'app-example',
  templateUrl: './example.component.html',
  styleUrls: ['./example.component.css']
})
export class ExampleComponent {

  constructor(private test: TestService,
              ) { }

  doTest(){    
   console.log("CheckingValue"+ this.test.url)
  }
}

Как установить значение URL-адреса, чтобы я мог получать его на другом компоненте? Я новичок в angular. Я вижу в консоли, что значения this.test.url отображаются как неопределенные.


person Subham    schedule 07.05.2019    source источник


Ответы (2)


вы вызываете переменную, просто определяя ее так, чтобы по умолчанию она была undefined, поэтому вызовите метод, который добавил к ней значение.

просто добавьте return в свой метод someExample()

someExample() {
   return  this.url="Hello";
}

Пример.component.ts

doTest() {    
  console.log("CheckingValue"+ this.test.someExample())
}
person Ganesh    schedule 07.05.2019

Используйте Observable, чтобы подписаться на изменения:

import { Observable, of } from 'rxjs';

Injectable()
export class TestService {
 url:string;

someExample(): Observable<string>{
 return of (this.url="Hello");
}

И получить/подписаться на него в компоненте:

this.testService.someExample().subscribe(result => {
 console.log(result);
});

Если значение изменится в службе, вы получите обновленное значение в компоненте.

person Maihan Nijat    schedule 07.05.2019
comment
someexample() { return Observable.create(observer =› { onSuccess: function (result) { // Обработка некоторых данных this.url=Hai; }}); getExample(){ вернуть this.url; } В другом компоненте я получаю это значение как неопределенное. Как сохранить значение this.url в Observable - person Subham; 07.05.2019
comment
Я не уверен в вашем точном случае пользователя, но похоже, что вы ищете среду. com/@weswhite/ - person Maihan Nijat; 07.05.2019
comment
Не могли бы вы уточнить случай пользователя? Что именно вы пытаетесь сделать с общим сервисом. - person Maihan Nijat; 07.05.2019
comment
В наблюдаемой части кода я пытаюсь извлечь значение URL-адреса и сохранить его в переменной this.url. Эту переменную URL-адреса я передаю как возвращаемое значение одной из функций. Чтобы я мог получить это значение URL-адреса в других компонентах, но я получаю значение как неопределенное. Если я делаю тот же процесс без наблюдения, я получаю URL-адрес значение в других компонентах. Не знаю, почему с наблюдаемым значение переменной this.url не сохраняется как глобальная переменная. - person Subham; 07.05.2019