我是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)中获取数据吗?
谢谢您的帮助。
答案 0 :(得分:0)
首先,您不能在angular中使用require 您应该这样导入: 从“ ibm-watson / discovery”导入*作为DiscoveryV2; 第二,您应该返回promise的self和call方法,并在构造函数的then子句中设置您的summaryvalues