角度服务方法不是功能产品构建

时间:2020-12-30 11:43:07

标签: angular

我尝试让我的 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; });
  }



}

以下是检查错误的全部文件。 我在这里缺少什么?谢谢!

2 个答案:

答案 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';