Ionic2/angularJs2中的靜態類 PhotoLibrary 調用不上

photoLibrary調用報錯:No provider for PhotoLibrary;

在調用相冊文件時有用到photolibrary,總有些莫名的報錯,3月份的時候這個坑讓我不知所措,如今寫下來方便查看(也不知道Ionic2如今是否有變化),入坑過程:java

按照官網示例:ionic

1.添加插件:ide

cmd 到項目目錄運行:函數

ionic plugin add cordova-plugin-photo-library --variable PHOTO_LIBRARY_USAGE_DESCRIPTION="To choose photos"


2. ts文件中添加:this

import { PhotoLibrary } from '@ionic-native/photo-library';

constructor(private photoLibrary: PhotoLibrary) { }

  this.photoLibrary.requestAuthorization().then(() => {

    this.photoLibrary.getLibrary().subscribe({ next: library => {

    library.forEach(function(libraryItem) {

      console.log(libraryItem.id); // ID of the photo

       //........

  }); },

error: err => {}, complete: () => { console.log("could not get photos"); } }); })

.catch(err => console.log("permissions weren't granted"));

好,這一運行,就出現No provider for PhotoLibrary;spa

查了好久---------,終於發現了這個鬼;插件

在查看PhotoLibrary.java看到了一些靜態的內部的類(沒深刻了解java---大概是這個意思):code

public static XXX{}

而在java中的靜態類 是不能使用繼承的(使用 this、super關鍵字);cordova

因此在.ts文件中就這樣作-------->blog

import { PhotoLibrary } from '@ionic-native/photo-library';
constructor() { //1.構造函數中不注入PhotoLibrary
  
}
 theFunction(){
     //2.直接使用--不用this
  PhotoLibrary.requestAuthorization().then(() => {     PhotoLibrary.getLibrary().subscribe({ next: library => {     library.forEach(function(libraryItem) {       console.log(libraryItem.id); // ID of the photo        //........    }); }, error: err => {}, complete: () => { console.log("could not get photos"); } }); }) .catch(err => console.log("permissions weren't granted")); }
ionViewDidLoad(){
  //3.調用方法
  this.theFunction();
}
 

--------------最終調用成功了-------------------

總結:若是遇到相似的靜態類,能夠參照此方法。

相關文章
相關標籤/搜索