使用Angular CLI/WebPack汇总的可管道RxJs操作符的正确导入模式
在Angular CLI版本中{ 这个.navigationManager.navigateToDefaultScreen(); 可观测的返回值(空); }), 采取(1) ); }否则{ 可观测的返回值(空); } } }使用Angular CLI/WebPack汇总的可管道RxJs操作符的正确导入模式,angular,typescript,webpack,rxjs,Angular,Typescript,Webpack,Rxjs,在Angular CLI版本中{ 这个.navigationManager.navigateToDefaultScreen(); 可观测的返回值(空); }), 采取(1) ); }否则{ 可观测的返回值(空); } } } 我想知道是否还有一种方法可以将所有这些操作符和静态方法导入到一个地方,或者是否有必要将导入包含到模块,组件,服务,管道,指令,的每个角度定义中,等等。Angular CLI团队的成员说,由于可管道操作符是函数,因此需要将它们导入到每个文件中 优势:该应用程序支持更好的树
我想知道是否还有一种方法可以将所有这些操作符和静态方法导入到一个地方,或者是否有必要将导入包含到
模块
,组件
,服务
,管道
,指令
,的每个角度定义中,等等。Angular CLI团队的成员说,由于可管道操作符是函数,因此需要将它们导入到每个文件中
优势:该应用程序支持更好的树震动,从而减小捆绑大小。第三方库不会弄脏可观察的原型。创建自定义操作符也变得容易得多
缺点:应用程序使用的操作员需要按文件包含,而不是整个应用程序只包含一次
// Statics
import 'rxjs/add/observable/throw';
import 'rxjs/add/observable/of';
import 'rxjs/add/observable/range';
import 'rxjs/add/observable/concat';
import 'rxjs/add/observable/merge';
import 'rxjs/add/observable/empty';
// Operators
import 'rxjs/add/operator/catch';
import 'rxjs/add/operator/debounceTime';
import 'rxjs/add/operator/distinctUntilChanged';
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/switchMap';
import 'rxjs/add/operator/toPromise';
...
// OPERATORS
import './rxjs-operators';
@NgModule({
declarations: [
AppComponent
],
imports: [...],
providers: [...],
schemas: [
CUSTOM_ELEMENTS_SCHEMA
],
bootstrap: [AppComponent]
})
export class AppModule { }
...
import { Observable } from 'rxjs/Observable';
import 'rxjs/util/pipe';
import { take, catchError } from 'rxjs/operators';
@Injectable()
export class AccountDetailsResolver implements Resolve<AccountDetails> {
constructor(private membersApi: MembersApiService,
private router: Router,
private navigationManager: NavigationManagerService) {}
resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<AccountDetails> {
if(route.paramMap.get('accountId')) {
return this.membersApi.getBasicDetails(route.paramMap.get('accountId')).pipe(
catchError(error => {
this.navigationManager.navigateToDefaultScreen();
return Observable.of(null);
}),
take(1)
);
} else {
return Observable.of(null);
}
}
}