2017-10-18 20 views
0

J'ai un service écrit en angulaire 2 pour télécharger une image vers Firebase. le code est:Les fonctions Firebase ne sont pas reconnues en angulaire 4

import {Injectable} from "@angular/core"; 
import {AngularFireDatabase} from "angularfire2/database"; 
import {FileUpload} from "../objects/file"; 
import * as firebase from 'firebase'; 
@Injectable() 
export class UploadFileService { 
    private basePath = '/uploads'; 
    constructor(private db: AngularFireDatabase) {} 
    pushFileToStorage(fileUpload: FileUpload, progress: {percentage: number}) { 
    const storageRef = firebase.storage().ref(); 
    const uploadTask = storageRef.child(`${this.basePath}/${fileUpload.file.name}`).put(fileUpload.file); 

    uploadTask.on(firebase.storage.TaskEvent.STATE_CHANGED, 
     (snapshot) => { 
     // in progress 
     const snap = snapshot as firebase.storage.UploadTaskSnapshot; 
     progress.percentage = Math.round((snap.bytesTransferred/snap.totalBytes) * 100); 
     }, 
     (error) => { 
     // fail 
     console.log(error); 
     }, 
    () => { 
     // success 
     fileUpload.url = uploadTask.snapshot.downloadURL 
     fileUpload.name = fileUpload.file.name 
     this.saveFileData(fileUpload); 
     } 
    ); 
    } 

    private saveFileData(fileUpload: FileUpload) { 
    this.db.list(`${this.basePath}/`).push(fileUpload); 
    } 
} 

ce code me donne l'erreur sur les « firebase.storage » fonctions « stockage de propriété n'existe pas sur le type firebase statique »

J'ai lu un post sur cette parole que cela pourrait être corrigé en changeant l'importation firebase en "declare var firebase" mais ceci n'a pas fonctionné.

Répondre

0

Changer vos lignes:

import * as firebase from 'firebase/app'; 
import 'firebase/storage'; 

La première ligne importe les types. Le second n'importera que le stockage Firebase.

+0

Cela a fonctionné très bien! Merci. –