[英]TSLint errors in Angular2 project: Type 'Subscription' is not assignable to type 'FirebaseListObservable<any[]>'
遇到這個問題,無法解決...
以下是相關代碼:
export class AdminComponent {
items: FirebaseListObservable < any[] > ;
private xyz: string;
private fbList: FirebaseListObservable < any[] > ;
private userData: object[];
private userEid: object[];
private userFullName: object[];
private uniqueID: string;
private quizAnswerA: string;
private userList = [];
private userAnswer1: any;
constructor(db: AngularFireDatabase, private router: Router, private route: ActivatedRoute) {
this.fbList = db.list('/');
this.items = this.fbList.map(items => {
const dbAnalytics = items[0];
const dbBookings = items[1];
const dbClasses = items[2];
const dbLabs = items[3];
const dbMachines = items[4];
const dbPostLabs = items[5];
const dbPreLabs = items[6];
const dbUsers = items[7];
for (const key of Object.keys(dbUsers)) {
if (dbUsers.hasOwnProperty(key)) {
this.userData = dbUsers[key];
this.uniqueID = key;
this.userEid = this.userData['eid'] !== undefined ? this.userData['eid'] : 'N/A';
this.userFullName = this.userData['name'];
}
let time = 'N/A';
let count = 0;
let runs = dbAnalytics['expRuns'];
if ((key in runs)) {
let experiments = runs[key]['-KVQN-Qk-CLh_KupgKTt'];
count = Object.keys(experiments)
.length;
try {
time = experiments[Object.keys(experiments)[Object.keys(experiments)
.length - 1]]['time'].replace('T', ' ')
.split('.')[0];
} catch (e) {}
}
let firstQuizAnswer = dbPostLabs['-KVQN-Qk-CLh_KupgKTt']['a']['completed'];
let secondQuizAnswer = dbPostLabs['-KVQN-Qk-CLh_KupgKTt']['b']['completed'];
let thirdQuizAnswer = dbPostLabs['-KVQN-Qk-CLh_KupgKTt']['c']['completed'];
let fourthQuizAnswer = dbPostLabs['-KVQN-Qk-CLh_KupgKTt']['d']['completed'];
let store = new Row(this.userFullName, this.userEid, this.uniqueID, count, time, firstQuizAnswer[key], secondQuizAnswer[key], thirdQuizAnswer[key], fourthQuizAnswer[key]);
this.userList.push(store);
}
}
);
}
}
錯誤:
TS2322:無法將類型“訂閱”分配給類型“ FirebaseListObservable”。 “訂閱”類型中缺少屬性“ $ ref”。
我該如何解決? 我是Firebase和angular2的新手。 所有建議表示贊賞。
我嘗試使用此(類似)問題,但無濟於事。
使用HttpClient而不是Http,不能將類型'Subscription'分配給類型'Observable <SearchResult []>'Angular 5
謝謝!
因此,在您執行stackBlitz之后,我相信我已經找到了您的問題,但不知道最后的數據如何,我可以告訴您發生了什么。 首先,我建議使用服務將您的邏輯(如stackBlitz示例中)分開。
首先,不管您是否將fbList都設置為Observable而不是FireBaseObservableList,我相信無論如何它都已被棄用。 我也將項目也設置為空類型的數組(再次,我也不知道最終結果是什么樣的),但是無論如何我都沒有使用angular | 異步管道),然后將.ValueChanges()添加到fbList使其可觀察。
另外,如果您知道數據的外觀並希望使用map,則可以將項聲明為數據的類型,然后,如果您要使用map運算符,請先從rxjs / operators將該數據導入angular並記住必須使用.pipe(map())首先。 查看該示例,並在不首先進行其他所有操作的情況下進行嘗試,以查看其工作原理。 如果您需要有關模型的更多指導,請更新數據樣本。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.