【发布时间】:2017-03-09 14:41:38
【问题描述】:
我在 Angular 2 中查看了一个特定的东西,我需要使用即将发生的更改来更新指令的选择器的数据绑定变量。但是,它不会在每次更改时都更新。
@Component 模板中的@Directive 选择器,我们调用 comp.html
<sunburst-chart [className]="'sunburst-chart'" width="200" height="200" bind-data="costData">
</sunburst-chart>
我的目标数据是“costData”
这是指令的样子,
import { Directive, ElementRef, Attribute, SimpleChange, Input, OnChanges, ViewChild } from '@angular/core';
import * as d3 from 'd3';
@Directive({
selector: 'sunburst-chart'
})
export class SunburstChart {}
import {Component, OnInit, ViewEncapsulation} from '@angular/core';
import {AWSTotalCostService} from '../services/index';
import {Router} from '@angular/router';
import {CostPricingTileModel} from '../models/costpricingtile.model';
@Component({
moduleId: module.id,
selector: 'costing-module-tile',
templateUrl: 'costpricingtile.html',
providers: [AWSTotalCostService],
encapsulation: ViewEncapsulation.None,
styleUrls: ['costpricingtile.scss'],
})
export class CostPricingTileComponent implements OnInit {
private costData : any;
这会调用一个服务,返回数据,之后视图不会更新。
private sample () : any {
this.sampleService.sampleFun()
.subscribe(
data => {
this.costData = data
},
error => this.errorMessage = error
);
}
ngOnInit () : void {
console.log('');
this.sample();
}
非常感谢任何帮助。
我面临的问题是,我无法更新对 html 中绑定数据的更改。
PS。使用最新版本的 Angular(稳定版,不是 beta 版)
添加更简单的术语,
说点简单的吧。我有一个 d3 图表,我使用选择器“sunburst-chart”创建了一个指令 (@Directive)。我有一个组件(@Component),其中包含一个 templateUrl '一个 html 文件',它有这个选择器作为一个元素。我将该元素的数据指向组件的数据变量'say costData'。最初它工作正常,因为我有一些数据存在,当 costData 从服务中更改时,costData 会更新,但更改不会绑定回选择器。因此不会发生视图更改
【问题讨论】:
-
目前还不完全清楚您要做什么。可以解释一下
bind-data的实际用途吗?我可以告诉你尝试使用[bind-data]="costData"。但我不确定,因为我不知道你到底想做什么 -
说点简单的吧。我有一个 d3 图表,我使用选择器“sunburst-chart”创建了一个指令 (@Directive)。我有一个组件(@Component),其中包含一个 templateUrl '一个 html 文件',它有这个选择器作为一个元素。我将该元素的数据指向组件的数据变量'say costData'。最初它工作正常,因为我有一些数据存在,当 costData 从服务中更改时,costData 会更新,但更改不会绑定回选择器。因此视图更改不会发生
-
@ArunKumar 您说初始数据工作正常,但新数据不会更新指令,对吧?请告诉我们数据是如何更改的。例如,您展示的
sample()函数在ngOnInit中设置了初始数据,但我们看不到您以后如何更新它
标签: angular typescript data-binding angular2-directives angular2-components