Angular 静态类对象属性在运行时未定义
我有一个奇怪的问题 我有这门课Angular 静态类对象属性在运行时未定义,angular,typescript,webpack,Angular,Typescript,Webpack,我有一个奇怪的问题 我有这门课 export class PageList { static readonly About: IPageInfo = Object.seal({ menuTitle: 'About', url: 'about', trainingType: undefined, trainingName: undefined }); static readonly PrivacyFull: IPageInfo = Object.se
export class PageList {
static readonly About: IPageInfo = Object.seal({
menuTitle: 'About',
url: 'about',
trainingType: undefined,
trainingName: undefined
});
static readonly PrivacyFull: IPageInfo = Object.seal({
menuTitle: 'FullPrivacyDetails',
url: 'privacy-full',
trainingType: undefined,
trainingName: undefined
});
}
我以这种方式在组件中使用它:
import { PageList } from 'src/app/models/classes/page-list.model';
@Component({
selector: 'app-privacy',
templateUrl: './privacy.page.html',
styleUrls: ['./privacy.page.scss']
})
export class PrivacyPage implements OnInit {
onSeeAll() {
this.navService.push(PageList.PrivacyFull)
}
}
在this.navService.push
中,我将获得PrivacyFull
静态成员,其中menutile
为未定义的
在Chrome开发工具中查看它时,会发现它是未定义的
,但如果我看到该文件(DevTools喜欢),它就是我编写的文件
我做错什么了?我真的看不出来
或者Typescript/Webpack是否以错误的方式编译
编辑:当我看到生成的webpack模块时,它也是未定义的
根据需要进行编辑,这里是我的package.json
依赖项
{
"dependencies": {
"@angular/common": "^7.2.4",
"@angular/core": "^7.2.4",
"@angular/forms": "^7.2.4",
"@angular/http": "^7.2.4",
"@angular/platform-browser": "^7.2.4",
"@angular/platform-browser-dynamic": "^7.2.4",
"@angular/router": "^7.2.4",
"@ionic-native/admob-free": "^5.0.0",
"@ionic-native/android-permissions": "^5.0.0",
"@ionic-native/app-rate": "^5.0.0",
"@ionic-native/app-version": "^5.0.0",
"@ionic-native/core": "^5.0.0",
"@ionic-native/device": "^5.0.0",
"@ionic-native/file": "^5.0.0",
"@ionic-native/file-chooser": "^5.0.0",
"@ionic-native/file-path": "^5.0.0",
"@ionic-native/market": "^5.0.0",
"@ionic-native/music-controls": "^5.0.0",
"@ionic-native/screen-orientation": "^5.0.0",
"@ionic-native/secure-storage": "^5.0.0",
"@ionic-native/splash-screen": "^5.0.0",
"@ionic-native/status-bar": "^5.0.0",
"@ionic-native/toast": "^5.0.0",
"@ionic/angular": "^4.0.1",
"@ionic/storage": "^2.2.0",
"@ngx-translate/core": "^11.0.1",
"@ngx-translate/http-loader": "^4.0.0",
"@saninn/logger": "^0.4.0",
"cordova-plugin-admob-free": "0.25.0",
"cordova-plugin-android-permissions": "1.0.0",
"cordova-plugin-app-version": "0.1.9",
"cordova-plugin-apprate": "1.4.0",
"cordova-plugin-device": "2.0.2",
"cordova-plugin-file": "6.0.1",
"cordova-plugin-filechooser": "1.2.0",
"cordova-plugin-filepath": "1.5.1",
"cordova-plugin-market": "1.2.0",
"cordova-plugin-music-controls": "2.2.0",
"cordova-plugin-screen-orientation": "3.0.1",
"cordova-plugin-secure-storage": "3.0.1",
"cordova-plugin-x-toast": "2.7.2",
"core-js": "^2.5.4",
"rxjs": "~6.3.3",
"zone.js": "~0.8.29"
},
"devDependencies": {
"@angular-devkit/architect": "^0.12.4",
"@angular-devkit/build-angular": "^0.12.4",
"@angular-devkit/core": "~7.2.3",
"@angular-devkit/schematics": "~7.2.3",
"@angular/cli": "^7.2.3",
"@angular/compiler": "^7.2.4",
"@angular/compiler-cli": "^7.2.4",
"@angular/language-service": "^7.2.4",
"@commitlint/cli": "^7.5.0",
"@commitlint/config-conventional": "^7.5.0",
"@ionic/angular-toolkit": "^1.3.0",
"@ionic/v4-migration-tslint": "^1.7.0",
"@types/jasmine": "^2.8.16",
"@types/jasminewd2": "~2.0.3",
"@types/jest": "^23.3.14",
"@types/node": "^10.12.21",
"@types/webaudioapi": "0.0.27",
"codelyzer": "^4.5.0",
"fs-extra": "^7.0.1",
"husky": "^1.3.1",
"jasmine-core": "~2.99.1",
"jasmine-spec-reporter": "~4.2.1",
"jest": "^23.6.0",
"jest-preset-angular": "^7.0.0-alpha.2",
"karma": "~3.1.4",
"karma-chrome-launcher": "~2.2.0",
"karma-coverage-istanbul-reporter": "~2.0.1",
"karma-jasmine": "~1.1.2",
"karma-jasmine-html-reporter": "^0.2.2",
"ngx-spec": "^1.0.1",
"npm-run-all": "^4.1.5",
"prettier": "^1.16.4",
"pretty-quick": "^1.10.0",
"protractor": "~5.4.0",
"ts-mockito": "^2.3.1",
"ts-node": "^8.0.2",
"tslint": "~5.12.0",
"typescript": "~3.1.6"
},
"husky": {
"hooks": {
"pre-commit": "run-s format:fix",
"commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
}
},
"cordova": {
"plugins": {
"cordova-plugin-admob-free": {},
"cordova-plugin-apprate": {},
"cordova-plugin-screen-orientation": {},
"cordova-plugin-music-controls": {},
"cordova-plugin-x-toast": {},
"cordova-plugin-secure-storage": {},
"cordova-plugin-device": {},
"cordova-plugin-market": {},
"cordova-plugin-app-version": {},
"cordova-plugin-filechooser": {},
"cordova-plugin-file": {},
"cordova-plugin-filepath": {},
"cordova-plugin-android-permissions": {}
}
}
}
我记得看到过那种行为,但我无法重现。你使用什么版本的Typescript?我的package.json
有~3.1.6
,但我在package lock.json
中看到一些角度依赖项使用3.2.4
,因为我在过去看到过这一点,在这种情况下,我倾向于使用带有readonly
成员属性的单例服务。@ConnorsFan我可以尝试一下,尽管我很确定我会在某些地方得到一些循环依赖,但我不明白为什么使用服务会导致循环依赖。看见