构造函数:类型“ void”不可分配给类型“ any []”

时间:2020-04-20 08:19:57

标签: angular api syntax-error

我是Angular的新手。原谅我的初学者错误。

我有一个DataService(WatsonService)和一个组件。 DataService通过BearerAuthenticator从IBM Watson Cloud获取数据。我有一个return语句return (JSON.stringify(response.result, null, 2));,我想在组件中处理该返回。

服务

import { Injectable } from '@angular/core';
import { BearerTokenAuthenticator} from 'ibm-cloud-sdk-core';

@Injectable({
providedIn: 'root'
})
export class WatsonService {

public getMatchings(){

const DiscoveryV2 = require('ibm-watson/discovery/v2');
const discovery = new DiscoveryV2({
  // tslint:disable-next-line: max-line-length
  authenticator: new BearerTokenAuthenticator({ bearerToken: 'ABCDEF' }),
  url: 'https://Watson.api',
  version: '2019-11-29',
  disableSslVerification: true

});

discovery.query({
  projectId: '12345',
  collectionId: '54321',
  query: 'typ::Antwort'
})
.then(response => {
  console.log(JSON.stringify(response.result, null, 2));
  return (JSON.stringify(response.result, null, 2));

})
.catch(err => {
  console.log(err);

});
console.log();
}
}

组件

import { WatsonService } from './../_service/data.service';
import { Component, OnInit } from '@angular/core';

@Component({
  selector: 'app-page-list',
  templateUrl: './page-list.component.html',
  styleUrls: ['./page-list.component.sass'],
  providers:  [WatsonService]
})
export class PageListComponent implements OnInit {

  public matchShow: boolean;
  public matchShowMore: boolean;
  public $summaryValues = [];

  constructor(private watsonService: WatsonService) {
    this.matchShow = true;
    this.matchShowMore = true;
    this.$summaryValues = this.watsonService.getMatchings();

  }

  ngOnInit() {}
}

我遇到this.$summaryValues错误。 “类型'void'不能分配给类型'any []'。”我不明白那是什么意思。怎么了?有人可以告诉我如何分配它以从API(DataService)中获取数据吗?

谢谢您的帮助。

1 个答案:

答案 0 :(得分:0)

首先,您不能在angular中使用require 您应该这样导入: 从“ ibm-watson / discovery”导入*作为DiscoveryV2; 第二,您应该返回promise的self和call方法,并在构造函数的then子句中设置您的summaryvalues