gpt4 book ai didi

javascript - Angular 识别从 root 导入?

转载 作者:太空狗 更新时间:2023-10-29 19:27:10 25 4
gpt4 key购买 nike

我有一个使用 Inject/Injectable 的简单服务:

import {Inject, Injectable} from '@angular/core';
import {APP_CONFIG} from '../../config/app-config.module';
import {AppConfig} from '../models/core/app-config.model';

@Injectable()
export class AuthService {
constructor(@Inject(APP_CONFIG) private config:AppConfig) {
}
}

这里没有新内容,但是 - 正如我们所知 - 我必须导入 Inject, Injectable

即使我已经在根模块中导入了 Inject, Injectable - 我仍然必须在文件中导入它们。

好的。

但现在我面临这样一种情况(代码不是我的),开发人员在根文件夹中导入了一些 RXJS 运算符:

rxjs-imports.ts

import 'rxjs/add/operator/filter'
import 'rxjs/add/operator/do'
import 'rxjs/add/operator/map'
import 'rxjs/add/operator/catch'
import 'rxjs/add/operator/shareReplay'
import 'rxjs/add/operator/distinctUntilChanged'
import 'rxjs/add/operator/pluck'

enter image description here

然后他在 app.module.ts 中导入文件:

import './rxjs-imports';

现在他可以在另一个组件/服务中使用这些运算符而无需导入它们(!):

 import {Observable} from 'rxjs/Observable';
//no imports for operators
public get<T>(name: string) :Observable<T>{
return this.subj.pluck( "d"); <---- how does it knows pluck ?
}

问题:

我不明白 - 为什么它会起作用?我预计编译器会大喊添加 pluck 运算符

最佳答案

import 'rxjs/add/operator/xxx' 实际上修补了 Observable 原型(prototype)并使用指定的运算符扩展它,因此导入文件的结果能够从那时起,将这些运算符与代码中的每个 Observable 一起使用。

您可以在 RxJS 源代码中看到它是如何完成的,例如 catch运营商。

关于javascript - Angular 识别从 root 导入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48033137/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com