问题标签 [angular2-opaquetoken]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
26622 浏览

angular - Angular 2 不透明令牌中有什么,有什么意义?

我遇到了“不透明令牌”作为在 Angular 2 中实现全局常量的解决方案,例如这里:Define global constants in Angular 2

尽管阅读了文档,但我似乎无法理解这一点。

使用 OpaqueToken 比使用字符串作为令牌更可取,因为多个提供者使用相同的字符串作为两个不同的令牌可能会导致冲突。

什么?什么是 Angular2 令牌开始?我在谷歌上得到的只是关于 JSON Web Tokens 的答案(它们在身份验证中的作用等),我理解,但显然没有任何关系。

什么是不透明令牌?它是干什么用的?

PS 更多关于用于提供常量的不透明标记的文档。然而,他们并没有给我太多帮助。

0 投票
0 回答
29 浏览

angular - OpaqueTokens - 为什么他们需要 @Inject(token) 而不是被输入

为什么我需要@Inject(...)一个 OpaqueToken,而不是像类型一样使用它?

为什么会这样:

这不会

当我声明/提供以下 OpaqueToken 时:

app.constants.ts

app.module.ts:

0 投票
1 回答
82 浏览

angular - Angular2 Routing-Resolve 接口使用与 OpaqueToken

我想在实例化路由/组件之前获取数据。因此,我想使用 Angular2-Routing-Module 中的“解析器”接口。

看看我的代码。它使用字符串作为提供程序名称,但如果我为提供程序使用 OpaqueToken 则会引发错误。

注意“不工作”的评论。

1 我的(儿童)路线(摘录)。

2 我的模块代码(摘录):

3 我的自定义解析器类(摘录):

不可能用创建的 OpaqueToken(“MyToken” - 当然不带引号)替换字符串(“myResolver”)。不知道为什么。我为多个提供者使用了多个 OpaqueToken,但解析器无法使用它。

控制台中的错误消息如下所示,没有更多信息。

错误:必须定义令牌!

有人知道吗?

0 投票
1 回答
1128 浏览

angular - 使用可注入令牌来处理全局常量 Angular 4

我们正在构建新的 Angular 4 项目,并试图了解哪种方法最适合处理将在所有项目中重用的全局常量。

我想像这样将所有常量放在共享文件夹中

共享

并为每个文件使用可注入令牌

https://blog.thoughtram.io/angular/2016/05/23/opaque-tokens-in-angular-2.html

例如 dialogConfig.ts 将是

这样每个常量对象都可以避免名称冲突并且可以注入。

这种方法的利弊是什么?

0 投票
0 回答
152 浏览

angular - 为什么要使用 Service 和 Token / OpaqueToken 来获取 Angular 中的 Window 对象

前几天我正在和一位不喜欢我的代码的同事交谈。在我的 Angular 组件中,我window像这样访问对象private myWindow = window;

他告诉我更好的方法是使用 Service 和 Token / OpaqueToken (我不知道 OpaqueToken 是什么),就像这样......

然后我可以注入服务并像这样获取对象......

这一切看起来都非常好和干净,但我不明白使用令牌(或令牌的作用)和服务比仅用window对象分配变量的优势 - 有人可以告诉我为什么使用服务和令牌是更好的做法?

0 投票
0 回答
122 浏览

angular - 如何使用 aot 编译器将 3rd 方 js 库导入 Angular

我目前正在使用不透明的令牌。我首先在项目的 common 部分定义一个 opaque token 如下:

然后我将其导入如下:

// 然后我将 jquery 定义为 $window 对象:

// 然后在应用程序提供程序中,我有以下内容:

// 然后,我将令牌导入到组件中:

// 并按如下方式注入

这使我能够使用智能感知定义接口,例如:

上述解决方案非常有效,除非我想使用 aot 进行生产构建。有没有解决的办法?也就是说,以下工作:

但这有运行时错误:

我使用 angular 4.3.4 和 cli 的 1.2.8。

我知道我可能会使用插件,但我宁愿不这样做,因为这将意味着对项目进行大量更改并且可能有它自己的错误。我查看了 angular 的 toastr 插件,发现它在调用页面导航时一直消失,尽管它是在页面导航之后调用的。如果我使用 OpaqueToken,则不会出现同样的问题。

0 投票
1 回答
234 浏览

angular - Angular:注入一个不透明的令牌

我试图了解如何注入不透明的令牌。

例如,我有一些服务 MyService,并为它创建了一个不透明的令牌:

没关系。但是我怎么能把这个服务注入到我的组件中呢?

我试图在我的组件中创建相同的不透明令牌实例并将其注入,但出现错误:错误:没有令牌 MyService 的提供者!

请,您可以查看一个示例:Plunker