Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular &引用;NullInjectorError:StaticInjectorError(AppModule)";DI的新(角度6+;)方法出错_Angular_Ionic Framework - Fatal编程技术网

Angular &引用;NullInjectorError:StaticInjectorError(AppModule)";DI的新(角度6+;)方法出错

Angular &引用;NullInjectorError:StaticInjectorError(AppModule)";DI的新(角度6+;)方法出错,angular,ionic-framework,Angular,Ionic Framework,我用的是Angular 8,在这里找不到任何对我有帮助的问题。在本教程之后,我创建了一个PhotoService: import { Injectable } from '@angular/core'; import { Camera, CameraOptions } from '@ionic-native/camera/ngx'; @Injectable({ providedIn: 'root' }) class Photo { data: any; } export class

我用的是Angular 8,在这里找不到任何对我有帮助的问题。在本教程之后,我创建了一个PhotoService:

import { Injectable } from '@angular/core';
import { Camera, CameraOptions } from '@ionic-native/camera/ngx';

@Injectable({
  providedIn: 'root'
})

class Photo {
  data: any;
}

export class PhotoService {

  public photos: Photo[] = [];

  constructor(private camera: Camera) { }

  takePicture() {
    const options: CameraOptions = {
      quality: 100,
      destinationType: this.camera.DestinationType.DATA_URL,
      encodingType: this.camera.EncodingType.JPEG,
      mediaType: this.camera.MediaType.PICTURE
    };

    this.camera.getPicture(options).then((imageData) => {
      // Add new photo to gallery
      this.photos.unshift({
          data: 'data:image/jpeg;base64,' + imageData
      }); }, (err) => {
      // Handle error
      console.log("Camera issue: " + err);
  });

  }

}
然后将其注入相关组件中:

import { Component } from '@angular/core';
import { PhotoService } from '../services/photo.service';

@Component({
  selector: 'app-tab2',
  templateUrl: 'tab2.page.html',
  styleUrls: ['tab2.page.scss'],
})
export class Tab2Page {

  constructor(public photoService: PhotoService) {}

}
但这产生了一个错误:

consolelogs.js:49 ERROR Error: Uncaught (in promise): NullInjectorError: StaticInjectorError(AppModule)[Tab2Page -> PhotoService]: 
  StaticInjectorError(Platform: core)[Tab2Page -> PhotoService]: 
    NullInjectorError: No provider for PhotoService!
NullInjectorError: StaticInjectorError(AppModule)[Tab2Page -> PhotoService]: 
  StaticInjectorError(Platform: core)[Tab2Page -> PhotoService]: 
    NullInjectorError: No provider for PhotoService!
但当我以旧的方式注入服务时,如下所示:

import { Component } from '@angular/core';
import { PhotoService } from '../services/photo.service';

@Component({
  selector: 'app-tab2',
  templateUrl: 'tab2.page.html',
  styleUrls: ['tab2.page.scss'],
  providers: [PhotoService]
})
export class Tab2Page {

  constructor(public photoService: PhotoService) {}

}
一切都很好。为什么新的注射方法不起作用?
谢谢。

为什么你把Photo类放在可注入装饰器和PhotoService之间?为什么你把
@Injectable
装饰器放在
Photo
类之上?尝试将其移动到
PhotoService
的正上方。他们在教程中没有提到位置会产生任何影响XD,谢谢。为什么即使Photo类位于@Injectable decorator的正下方,旧的注入方式仍然有效?