订阅不是Angular函数

时间:2018-10-19 09:55:13

标签: angular observable angular-components

我试图在订阅时返回值,我也得到了值,但也得到了错误

**内部服务**

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);
}

但是在我从按钮单击事件中调用了这些服务方法之后没有调用数据,然后显示了值。我收到错误订阅不是函数。我尝试使用of,因为它不起作用。 我正在尝试在页面加载时获取值,但无法在页面加载时获取数据

已编辑
问题已解决,但提出的下一个问题是我无法在nginit上获取值

2 个答案:

答案 0 :(得分:1)

更改您的方法,该方法返回Observable

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

OR

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

答案 1 :(得分:0)

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);
}