类型“Promise<Client>”上不存在属性“subscribe”。ngx-soap 包

Joa*_*ins 3 soap angular

我正在尝试使用ngx-soap包通过 Angular 6 获取soap请求。我有一个服务来处理 api,如下所示:

import { Injectable } from '@angular/core';

@Injectable()
export class ApiService {

client: Client;

  constructor(
    private soap: NgxSoapService
  ) {
    this.soap.createClient('assets/wsdl/auth/auth.wsdl').subscribe(client => this.client = client);
  }
}
Run Code Online (Sandbox Code Playgroud)

尽管这是包页面上的确切示例,但我收到以下错误:

[ts] Property 'subscribe' does not exist on type 'Promise<Client>'.
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用 then 但不应该可以使用这个包订阅吗?

dan*_*y74 5

您需要将承诺转换为可观察的,然后您可以订阅。

对于 RxJs v6,将代码更改为:

import { from } from 'rxjs'

const promise = this.soap.createClient('assets/wsdl/auth/auth.wsdl')
from(promise).subscribe(client => this.client = client)
Run Code Online (Sandbox Code Playgroud)

对于 RxJs v5:

import 'rxjs/add/observable/fromPromise'
import { Observable } from 'rxjs/Observable'

const promise = this.soap.createClient('assets/wsdl/auth/auth.wsdl')
Observable.fromPromise(promise).subscribe(client => this.client = client)
Run Code Online (Sandbox Code Playgroud)