我尝试让我的 Angular 应用在 prod 模式下运行以检查是否一切正常。
该应用程序使用 swapi API 来获取工作正常的演员,但在生产版本中除外,然后我收到以下错误
<块引用>this.dataService.getActors 不是函数
这是获取所有Actor的方法:
import { Injectable } from '@angular/core';
import { HttpClient, HttpResponse } from '@angular/common/http';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/catch';
import { IActor } from '../interfaces/Actor';
import { ErrorService } from './error.service';
/**
* SWAPI Data Service to get all from their API we need
*/
@Injectable()
export class DataService {
/**
* we need the http client here to get API data
*/
constructor(private http: HttpClient, public error: ErrorService) { }
/**
* Method to get all Actors
*/
getActors(): Observable<IActor[]> {
return this.http.get<IActor[]>('//swapi.dev/api/people/')
.map(data => {
return data['results'];
});
}
/**
* Method to get Actor details by their ID
*/
getActorDetails(id: string): Observable<IActor[]> {
return this.http.get<IActor[]>(`//swapi.dev/api/people/` + id + '/')
.map(data => {
return data['results'];
});
}
}
这是我的组件中的调用:
import { Component, OnInit, Input } from '@angular/core';
import { IActor } from '../../interfaces/Actor';
import { HttpClient } from '@angular/common/http';
import { Router } from '@angular/router';
import { DataService } from '../../services/data.service';
@Component({
selector: 'app-actors',
templateUrl: './actors-list.component.html',
styleUrls: ['./actors-list.component.scss']
})
export class ActorsListComponent implements OnInit {
@Input() actors: IActor[];
constructor(private router: Router, private http: HttpClient, private dataService: DataService) { }
ngOnInit(): void {
this.dataService.getActors()
.subscribe((data) => { this.actors = data; });
}
}
以下是检查错误的全部文件。 我在这里缺少什么?谢谢!
答案 0 :(得分:1)
从您的 DataService 中删除 providedIn:'root' 并添加 @Injectable(),如下所示。还将您的 DataService 添加到 providers 数组下的 app.module.ts 中。比如,提供者:[DataService]
import {}
@Injectable()
export class DataService {
// Your code
}
答案 1 :(得分:0)
我看不出任何与代码相关的问题。唯一的可能是进口。在生产模式下,这可能是一个问题。尝试改变这个
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/catch'; // You are not using this
到这里
import { Observable } from 'rxjs';
import { map, catchError } from 'rxjs/operators';