Подписаться не является функцией Angular - PullRequest
0 голосов
/ 19 октября 2018

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

** Inside Service **

getColumnValueg(): Observable<any>
{  console.log("service",this.colValueg);
   return (this.colValueg);
}

** FormComponent **

ngOnInit()
{
  // perform the task of sending and receiving value.
  console.log("inint form-lib component",this.UserFormArray);

  this.UserFormArray = this.service.getFormDetails();

  this.service.getColumnValueg().subscribe(data => this.g1 = data);
  this.service.getColumnValueg().subscribe(data => this.lg1 = data);
  this.service.getColumnValueg().subscribe(data => this.md1 = data);

  console.log('userformarray',this.UserFormArray);
  console.log(this.g1,this.lg1,this.md1);
}

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

Отредактировано
Проблема решена, но возникает следующая проблема: я невозможность получить значение по nginit

Ответы [ 2 ]

0 голосов
/ 19 октября 2018

Похоже, this.colValueg не является наблюдаемым.Вы должны будете преобразовать это в один.Для этого вы можете использовать of:

Если вы используете Rxjs6:

import { of } from 'rxjs';
...
colValueg = 'Some Value';
...
getColumnValueg(): Observable < any > {
  console.log("service", this.colValueg);
  return of(this.colValueg);
}

Если вы используете Rxjs5:

import { Observable } from "rxjs/Observable";
...
colValueg = 'Some Value';
...
getColumnValueg(): Observable < any > {
  console.log("service", this.colValueg);
  return Observable.of(this.colValueg);
}
0 голосов
/ 19 октября 2018

Измените свой метод, который возвращает Observable

getColumnValueg(): Observable<any>
{  console.log("service",this.colValueg);
   return Observable.of(this.colValueg);
}

ИЛИ

getColumnValueg(): Observable<any>
{  console.log("service",this.colValueg);
   return of(this.colValueg);
}

Изменение в ngOnInit

   ngOnInit()
    {
      // perform the task of sending and receiving value.
      console.log("inint form-lib component",this.UserFormArray);

      this.UserFormArray = this.service.getFormDetails();

      this.service.getColumnValueg().subscribe(data => {
          console.log(" ColumnValue data " , data);
      });

      console.log('userformarray',this.UserFormArray);
      console.log(this.g1,this.lg1,this.md1);
    }

Демонстрационная ссылка здесь - https://stackblitz.com/edit/angular-srabjg

...