每次在共享文件夹中生成内容时,index.ts文件都会被重新构建,导出会按字母顺序排列。对我来说,这似乎打破了依赖关系。手动更改顺序,以便在具有依赖项的类再次工作之前导出依赖项。
import { Injectable } from '@angular/core';
import { CanActivate, Router, ActivatedRouteSnapshot } from '@angular/router';
import { Observable } from 'rxjs/Observable';
import { AuthService, User } from './';
@Injectable()
export class AuthGuard implements CanActivate {
constructor(private accountService: AuthService, private router: Router) { }
canActivate(next: ActivatedRouteSnapshot): Observable<boolean> {
let result = this.accountService.currentUser.first().map(user => user != null);
let route: any[] = ['/login'];
if (next.url.length) {
route.push({ redirectUrl: next.url });
}
result.subscribe(isLoggedIn => {
if (!isLoggedIn) {
this.router.navigate(route);
}
});
return result;
}
}
和app/shared/account.service.ts
:
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs/Observable';
import { BehaviorSubject } from 'rxjs/BehaviorSubject';
import { User } from './';
const LOCAL_STORAGE_KEY = 'currentUser';
@Injectable()
export class AuthService {
private currentUserSubject: BehaviorSubject<User>;
constructor() {
this.currentUserSubject = new BehaviorSubject<User>(this.getUserFromLocalStorage())
this.currentUserSubject.subscribe(user => this.setUserToLocalStorage(user));
}
logIn(userName: string, password: string) : Observable<User> {
this.currentUserSubject.next({
id: userName,
userName: userName,
email: userName
});
return this.currentUser.first();
}
logOut() {
this.currentUserSubject.next(null);
}
get currentUser(): Observable<User> {
return this.currentUserSubject.asObservable();
}
private getUserFromLocalStorage(): User {
let userString = localStorage.getItem(LOCAL_STORAGE_KEY);
if (!userString) {
return null;
}
return JSON.parse(userString);
}
private setUserToLocalStorage(user: User) {
if (user) {
localStorage.setItem(LOCAL_STORAGE_KEY, JSON.stringify(user));
}
else {
localStorage.removeItem(LOCAL_STORAGE_KEY);
}
}
}
这不起作用:
export * from './auth.guard';
export * from './auth.service';
未处理的promise拒绝:错误:无法解析'AuthGuard'的所有参数(未定义,路由器)。确保所有参数都用Inject修饰或具有有效的类型注释,并且'AuthGuard'用injectable修饰。
export * from './auth.service';
export * from './auth.guard';
"@angular/common": "^2.0.0-rc.2",
"@angular/compiler": "^2.0.0-rc.2",
"@angular/core": "^2.0.0-rc.2",
"@angular/forms": "^0.1.0",
"@angular/http": "^2.0.0-rc.2",
"@angular/platform-browser": "^2.0.0-rc.2",
"@angular/platform-browser-dynamic": "^2.0.0-rc.2",
"@angular/router": "^3.0.0-alpha.7",
"bootstrap": "^3.3.6",
"es6-shim": "0.35.1",
"moment": "^2.13.0",
"ng2-bootstrap": "^1.0.17",
"reflect-metadata": "0.1.3",
"rxjs": "5.0.0-beta.6",
"slideout": "^0.1.12",
"systemjs": "0.19.26",
"zone.js": "0.6.12"
DevDependencies:
"angular-cli": "1.0.0-beta.6"
这是一个以桶为单位的出口订单问题。在这里的angular repo中有报道:https://github.com/angular/angular/issues/9334
有三种变通办法:
更改顺序,以便模块依赖项列在其依赖项之前。
export * from './auth.service';
export * from './auth.guard';
import { AuthService } from './auth.service';
import { User } from './';
更改typescript编译器选项以编译为SystemJS格式而不是CommonJS格式。这是通过将tsconfig.json的compileroptions.module
从commonJS
更改为system
来实现的。
请注意,在更改该配置时,需要将所有组件装饰器的moduleid
属性从module.id
更新为__modulename
,并在typings.d.ts
中声明如下:
declare var __moduleName: string;
此模块格式不是Angular-CLI工具(由Angular团队创建的官方构建工具)中的默认格式,因此可能不推荐或不支持。
注意:我个人对任何变通办法都不满意。
我正在Eclipse中创建一个应用程序,现在我想在我的项目中使用appcompat库。我已经成功地导入了这个库,当我用AppCompatActivity扩展一些活动时,它工作得很好。问题是,当我运行应用程序时,我的应用程序启动由AppCompActivty扩展的活动。应用程序崩溃。Log Cat正在显示NoClassDefFoundError:请为我指引正确的方向。谢谢
这里是Android开发者新手。我在MainActivity中使用recyclerview,应用程序不断崩溃。 任何帮助都将受到赞赏! 编辑:对不起,我是新来的。我已经附加了Logcat。和其他xml文件。谢谢 这是我的代码: 列出你的布局。xml: activity_main.xml: } ProductAdapter。java类: } Logcat: 致命异常:主进程:e.wolverine2
在我的应用程序中,我想在导航抽屉的片段中使用一个gridView,但我的应用程序正在崩溃。这是我的代码:
我已经为MediaPlayer创建了一个类,这样我就可以从多个类访问它,因为我需要在一次活动中启动媒体并在另一个活动中停止它。尝试调用mediaPlayer时,我出错。我不明白我在这方面出了什么错,因为我不完全理解错误。在为MediaPlayer创建类之前,它是有效的,但它不允许我做我想做的事情。是否有人可以建议我如何解决我的问题或以其他方式访问MediaPlayer。提前谢谢。 MainActi
我正试图通过Appium、Selenium框架自动化一些在Android设备上运行的移动应用程序测试。我已经在Selenium中设置了测试类,并尝试使用以下所需功能启动android驱动程序。我的Appium版本是1.4.16.1 当我在真正的三星设备上运行测试时,应用程序被打开,然后在打开时立即崩溃,并带有消息,我的测试应用程序是 当我在Appium桌面控制台中查看日志时,我看到以下内容: 请帮
当我从列表视图小部件或应用程序中注释一行时,它可以工作,但当我取消注释时,它根本不出现... 它是一个listview来呈现您通过api收到的通知列表,api与未来的构建器一起正常工作,但是当我添加listBuilder时,它停止工作…… 代码 日志终端