javascript - Angular 8 从外部库中检索值

标签 javascript angular color-picker

我有一个 Angular 8 应用程序,我已经导入了 iro.js库到我的项目中。

它是一个 JavaScript 颜色选择器库。

用法非常基本:

我已经更新了 angular.json 中的脚本

"scripts": 
[
    "node_modules/@jaames/iro/dist/iro.js"
]

然后如下使用库

declare var iro: any;
   .
   .
   .
ngOnInit() {
    this.colorPicker = new iro.ColorPicker('#color-picker-container');
    this.colorPicker.on('color:change', this.onColorChange);
}

onColorChange(color, changes) {
    this.selectedColor = color.hexString;
    console.log(this.selectedColor);
}

即使打印出该值,该值实际上并没有改变

我有一个 div 元素使用这个变量来显示颜色,但它没有改变。

<div class="color-value" [style.background-color]="selectedColor"></div>

我也试过调用 ChangeDetectorRef.detectChanges() 方法,但它说 iro.js 不能调用未定义的 detectChanges()(因为 ChangeDetectorRef 被注入(inject)在组件构造函数中,库不知道它)。

关于如何将颜色十六进制值从库中检索到我的 Angular 组件中有什么想法吗?

最佳答案

iro.js 没有在 ngZone 中运行,注入(inject)它并使用它来运行你的函数来改变检测正常工作:

constructor(private ngZone: NgZone) {}

this.colorPicker.on('color:change', (color, changes) =>  this.ngZone.run(() => this.onColorChange(color, changes)));

关于javascript - Angular 8 从外部库中检索值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59119012/

相关文章:

javascript - 隐藏/显示标记

Angular - 如何在组件之间订阅数据

angular - 使用 typescript 的 HTTP POST 请求失败,响应在 Angular 2 中为空值

javascript - 将敏感数据存储在 Local Stoarge 或 session 存储中是否安全? Localstorage 允许对敏感数据进行任何攻击

jquery - 颜色选择器不添加到动态 HTML 表

javascript - Google map 更改复选框上的 JSON 叠加样式

javascript - 如何使用 jquery/javascript 删除数组中的特定对象

javascript - 将 Hsl 转换为 rgb 和 hex

jquery - "Don' t 重复自己”的 jQuery 菜单方法

javascript - 为什么 ng-show 可以与 ng-repeat 一起使用,而 ng-if 不能?