Конструктор: тип 'void' нельзя назначить типу 'any []' - PullRequest
0 голосов
/ 20 апреля 2020

Я новичок в Angular. Прости мои ошибки новичка.

У меня есть DataService (WatsonService) и компонент. DataService получает данные из IBM Watson Cloud через BearerAuthenticator. У меня есть оператор возврата 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. Msgstr "Тип 'void' нельзя назначить типу 'any []'." Я не понимаю, что это значит. Что не так? Может кто-нибудь сказать мне, как мне назначить его для получения моих данных из API (DataService)?

Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 20 апреля 2020

Прежде всего, вы не можете использовать require в angular, вы должны импортировать так: импортировать * как DiscoveryV2 из 'ibm-watson / discovery'; во-вторых, вы должны вернуть обещание self и вызывать метод и установить итоговые значения в предложении then в конструкторе

...