如何更改 Angular 指令上的变量?

Posted

技术标签:

【中文标题】如何更改 Angular 指令上的变量?【英文标题】:How can I change a variable on an Angular directive? 【发布时间】:2017-12-03 18:57:47 【问题描述】:

我正在尝试为 Angular 指令的 html 中的 HTML 工具提示元素创建一个简单的切换。我在组件中定义属性,并且我已经验证它正在传递给指令,但是无论我在 HTML 中尝试什么,它都不会修改属性的值。

这是我的组件:

import  Component, Input, OnChanges, SimpleChanges from '@angular/core';
import  Utils  from './utils';
@Component(
  selector: 'm-chart',
  templateUrl: './m.component.html',
  styleUrls: ['./s-chart.scss']
)
export class MembersChartComponent implements OnChanges 
  constructor (private utils: Utils) 
  @Input() membersData:any;
  @Input() infoModalOpen:boolean;

这是父模板html:

<div class="row no-margin">
      <m-chart *ngIf="summaryData && summaryData.members" 
      [mData]="summaryData.members" infoModalOpen="false"></m-chart>
</div>

这是指令的 HTML:

<div class="row">
  <div ng-mouseover="infoModalOpen = !infoModalOpen" ng-mouseleave="infoModalOpen = !infoModalOpen" class="trigger">|</div>
  <div ng-show="infoModalOpen">Tooltip content here</div>
</div>

感谢任何帮助,谢谢!

【问题讨论】:

【参考方案1】:

我建议编写如下函数:

$scope.hoverIn = function()
  this.hoverEdit = true;
;

$scope.hoverOut = function()
    this.hoverEdit = false;
;

然后改变你的html代码如下:

&lt;div ng-mouseover="hoverIn()" ng-mouseleave="hoverOut()" class="trigger"&gt;|&lt;/div&gt;

请让我知道这是否有效!

祝你好运

【讨论】:

你会把这些函数放在哪里? 在你的类 MemberChartComponent 之后的布尔值 感谢 Abdullah - 我最终改用 css - 更改元素的可见性。

以上是关于如何更改 Angular 指令上的变量?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用打字稿在 gulp-angular-generator 中定义指令

如何从指令中观察服务内的简单变量更改?

Angular $scope.$watch 用于仅从表单更改的变量(ng-model 指令)

MutationObserver 上的 Angular 指令单元测试失败:参数 1 不是“节点”类型

是否可以将服务注入 Angular 1.5 组件的 templateUrl 属性?

一“括”抵千言 —— Angular 2中的绑定