![](/img/trans.png)
[英]"export '__platform_browser_private__' was not found in '@angular/platform-browser'
[英]Angular private in type Platform but not in type
我對我遇到的錯誤有點困惑。
在我的項目中將我的 angular 版本升級到 v10 后,我遇到了以下問題:
這是我之前運行良好的代碼:
import { Platform } from '@angular/cdk/platform';
const platform: Platform = {
isBrowser: false,
TRIDENT: false,
EDGE: false,
WEBKIT: false,
IOS: false,
BLINK: false,
FIREFOX: false,
SAFARI: false,
ANDROID: false
}
我在規范測試中的beforeEach
中執行上述操作,並將platform
的值傳遞給函數。
但是,然后我收到了錯誤:
Property '_platformId' is missing in type '{ isBrowser: false; TRIDENT: false; EDGE: false; WEBKIT: false; IOS: false; BLINK: false; FIREFOX: false; SAFARI: false; ANDROID: false; }' but required in type 'Platform'
我認為這一定是較新版本的 angular 的新要求,所以我更新如下:
const platform: Platform = {
isBrowser: false,
TRIDENT: false,
EDGE: false,
WEBKIT: false,
IOS: false,
BLINK: false,
FIREFOX: false,
SAFARI: false,
ANDROID: false,
_platformId: null,
}
但是,現在我遇到了這個問題:
Property '_platformId' is private in type 'Platform' but not in type '{ isBrowser: false; TRIDENT: false; EDGE: false; WEBKIT: false; IOS: false; BLINK: false; FIREFOX: false; SAFARI: false; ANDROID: false; _platformId: null; }'
有什么辦法可以解決這個問題嗎? 我必須在其他地方設置_platformId
嗎?
平台是一個類,而不是一個接口,接口不能有私有成員。
您可以從構造函數參數創建Platform
實例:
constructor(public platform: Platform) {}
或在您的邏輯中:
const p = new Platform("platformID");
然后像以前一樣設置屬性。
所以這“有效”,但肯定必須有一種更整潔的方式?
let platform1 = new Platform(1);
platform1.isBrowser = false;
platform1.TRIDENT = false;
platform1.EDGE = false;
platform1.WEBKIT = false;
platform1.IOS = false;
platform1.BLINK = false;
platform1.FIREFOX = false;
platform1.SAFARI = false;
platform1.ANDROID = false;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.