问题标签 [angular2-pipe]
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.
asynchronous - 尽管 *ngIf 评估为 false,但异步管道仍在执行
我在使用异步管道时遇到问题,因为我想要一个能够同时依赖异步和静态数据的列表。但是,我无法理解如何以聪明的方式做到这一点。
现在它看起来像这样:
这是非常烦人的部分,即使*ngIf
是错误的,异步管道仍然会尝试做它的事情。导致应用程序崩溃并抛出错误,指出异步管道的参数类型错误,因为它需要一个承诺而不是数组。
所以我的问题是,为什么它会这样做,以及实现我想要的更好和更正确的方法是什么?
angular - 为其他元素重用管道过滤器结果
查看官方 angular2 管道文档中的示例,我想知道是否可以实现以下目标:
其中“hasFlyingHeroes”使用 ngFor 的过滤值,以免两次过滤掉 flyHeroes。
validation - 防止 angular2 应用程序因日期无效而崩溃(可能会覆盖 DatePipe?)
我基本上有一个这样的 HTML5 日期选择器:
另一个区域显示来自模型的日期,如下所示:
我认为这与这个问题无关,但要彻底,我在幕后有这样的事情:
这很棒。还有很多事情要做,但可能是无关紧要的细节。
问题是你可以点击日期选择器,比如说,选择年份并点击删除,这样做:
没问题吧?错了,因为 Angular2 日期管道变得混乱,我的整个应用程序在显示这个非常有用的错误消息后崩溃:
原始异常:管道“DatePipe”的参数“无效”
解决方案似乎很简单,但我不知道如何去做。我想我只需要在 DatePipe 处理它之前捕获日期字符串,并确保日期、月份和年份的有效内容。但是 Angular2 确实很神奇,而且因为它是使用模型绑定完成的,所以我看不到明确的干预途径。
我可能需要覆盖 DatePipe,保留其功能但首先检查字符串。我不知道怎么做。如果您知道如何做到这一点,请分享。任何替代方法也会有所帮助。只要日期不完整,我就不能让应用程序崩溃。
谢谢!
angular - invoke pipe during run time using pipe name /metadata
I'm trying to build a dynamic table where i wand to decide in run time which pipe to use (If Any).
I'm trying to achieve something similar to (Simplified):
Table
I understand that this example gives an error. Can i use Reflect is some manner or some other solution?
angular - Angular 中的不纯管道是什么?
我无法理解不纯的管道。
纯水管和非纯水管有什么区别?
请用一个简单而基本的例子来解释。
unit-testing - 测试组件时如何模拟管道
目前,我正在覆盖提供者以使用这样的模拟服务:
我想对组件使用的管道做同样的事情。我试过了,provide(PipeA, { useClass: MockPipeA })
但provide(PipeA, { useValue: new MockPipeA() })
两者都不起作用。
javascript - 为什么这个 Angular 2 Pipe 不返回数据?
我正在使用 Angular 2.0.0-RC.4 构建一个 Angular 2 管道。它应该根据属性栏过滤作为 Foo 数组传入的所有 Foo 对象。当我在调试器中单步执行代码时,会填充“allFoo”变量,“bar”变量也是如此。我可以断点并在控制台中运行 foos.filter() 代码,它会返回一个我期望的数组。当我让函数完成时,它什么也不返回。
我的代码有问题还是 Angular 2 RC4 中的错误?
这是打字稿:
作为参考,每个 Foo 对象看起来像这样,其中 bar 属性在其数组中将具有不同的字符串:
这是应用过滤器的模板文件:
这是加载该模板并使用过滤器的 Angular 类:
这是 Foo 模板和类:
如果我在该行设置断点console.log(results);
,我可以在控制台上键入以下内容并输出相应的数据:
如果这有助于解决这个问题,我可以发布转译的 JS。
谢谢!
asynchronous - 测试异步 PipeTransform
语境
我有一个基本的PipeTransform
,期望它是异步的。为什么?因为我有自己的 i18n 服务(由于解析、复数和其他限制,我自己做了),它返回一个Promise<string>
:
该管道运行良好,因为唯一延迟的调用是第一个调用(I18nService
使用延迟加载,只有在找不到密钥时才加载 JSON 数据,所以基本上,第一个调用将被延迟,其他调用是即时的但仍然异步)。
问题
我不知道如何使用 来测试这个管道Jasmine
,因为它在一个我知道它可以工作的组件中工作,但这里的目标是使用 jasmine 对其进行全面测试,这样我就可以将它添加到 CI 例程中。
上述测试:
失败是因为由于给出的结果I18nService
是异步的,所以返回的值在同步逻辑中是未定义的。
I18n 管道测试可以调用 I18n.get。失败的
预期未定义为“测试值”。
编辑:一种方法是使用setTimeout
,但我想要一个更漂亮的解决方案,以避免setTimeout(myAssertion, 100)
到处添加。
angular - Anglar2 Pipe - 使用组件中的属性进行过滤
我无法通过管道访问组件中的属性。
这是我的管道:
这是我在使用过滤器时尝试在 HTML 中访问的组件中的对象:
这是我要过滤的数组,也在我的组件内:
最后是 HTML:
基本上,当我选择一个单位时,我试图返回我的数组中的所有对象,其设备类型为该单位列为真。item.equip_type === "dagger"
和item.equip_type === "katana"
部分在我的 IF 语句中起作用,但是andargs[0].dagger == true
似乎&& args[0].katana == true
不起作用。无法弄清楚我做错了什么。我也试过'unit'
带引号和不带引号,没有运气。
angular - 如何将值发送到管道?
这是代码:
是否可以将产品颜色发送到管道?我undefined
在控制台上打印时得到。
我尝试过像下一个代码一样的插值,但没有成功: