2017-12-11 11 views
2

Angular CLI 버전 < 1.5.0에서 프로젝트의 RxJs 연산자를 단일 파일로 가져 와서 응용 프로그램 전체에서 사용할 수 있습니다.Angular CLI/WebPack 롤업을 사용하는 파이프 가능 RxJ 운영자의 올바른 가져 오기 패턴

rxjs-operators.ts

// 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'; 
... 

app.module.ts RxJs pipe 운영자 가져 오기의 권장 사용으로

// 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); 
    } 
    } 
} 


Module, Component는, ServicePipe는, Directive는 등 각도 CLI 팀 replied에서

답변

1

회원 및 싱크 있다고 말했다 각 각도 정의로 가져 오기 파이프가 가능한 연산자는 각 파일로 가져와야하는 함수입니다.

위쪽 : 응용 프로그램은 트리 떨림을 줄여 번들 크기를 줄입니다. 타사 라이브러리는 Observable 프로토 타입을 더럽 히지 않습니다. 또한 사용자 지정 연산자를 만드는 것이 훨씬 쉬워집니다.

단점 : 응용 프로그램에서 사용하는 연산자는 전체 응용 프로그램에 대해 한 번이 아니라 파일 단위로 포함되어야합니다.