angular入门篇(2)——*ngIf,数据绑定事件,属性绑定

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了angular入门篇(2)——*ngIf,数据绑定事件,属性绑定相关的知识,希望对你有一定的参考价值。

参考技术A 1,*ngIf简单用法

  用于显示与隐藏某些元素,例:<div *ngIf="ishide">测试啊啊啊</div>,也可以与toggle按钮配合。

如图;

2,数据绑定事件

以键盘事件和按钮点击事件为例,在事件发生的时候 html页面函数可以传递"$event",从而在ts页面对应的函数里面接收事件对象"e",打印出事件对象,可发现,里面包含坐标clientX、keyCode、currentTarget等等

3,属性的双向绑定

以input输入框为例,数据的双向绑定得提前在app.module引入FormsModule 这个模块,并且在imports申明此模块,否则html页面的[(ngModel)]报错。

未完待续。。。

Angular2 使用 *ngif 在 html 代码中设置类名

【中文标题】Angular2 使用 *ngif 在 html 代码中设置类名【英文标题】:Angular2 use *ngif to set class name in html code 【发布时间】:2018-10-01 15:21:57 【问题描述】:

我尝试了一些东西,因为我正在构建一个天气仪表板。

我使用 http 加载天气数据并订阅,所以我会得到一个可观察的返回,我不能像 typescript 中的数组那样通过槽来添加新属性。

例如,我想查看每个天气数据并查看某个值是否超过 70°F,并告诉天气数据项添加一个新属性“weatherdata-sun-hot”。否则它应该使用另一个类名“weatherdata-sun-normal”,我会使用它作为类名,稍后通过插值将其放入 html 中。

所以我的想法是用html模板来解决这个问题

到目前为止,我的代码在这里

<ul>
   <li *ngFor="let item of weatherdata">item.dt_txt | item.main.temp_min -> item.main.temp_max</li>
</ul>

有没有优雅的方法来解决这个问题?

感谢您的帮助。

【问题讨论】:

你需要条件类,看这个***.com/questions/35269179/… @AliAdravi:感谢您的提示,但我看不到那里的 if/else 机制。就像如果 val 大于使用类名 x 其他类名 y 一样。你能给我一个简单的例子吗? :-) 再次感谢。 @AliAdravi:我想出了一个我尝试过的可行解决方案:&lt;li *ngFor="let item of weatherdata" [ngClass]="[item.main.temp_max &gt; 17 ? 'weather-sun-hot' : 'weather-sun-normal']" &gt;item.dt_txt | item.main.temp_min -&gt; item.main.temp_max&lt;/li&gt; 但对我来说,它看起来像丑陋的代码。或者你会以同样的方式实现它吗?我很困惑。 【参考方案1】:

你需要使用 ngClass 指令:

<ul>
    <li *ngFor="let item of weatherdata" [ngClass]="'weatherdata-sun-hot': item.main.temp_min > 70, 'weatherdata-sun-normal': item.main.temp_min <= 70">
        item.dt_txt | item.main.temp_min -> item.main.temp_max
    </li>
</ul>

或者你可以在组件的代码中做它并绑定它:

模板

<ul>
    <li *ngFor="let item of weatherdata" [ngClass]="tempClass(item)">
        item.dt_txt | item.main.temp_min -> item.main.temp_max
    </li>
</ul>

组件

@Component(...)
class MyComponent 
    tempClass(item): any 
        const hot = item.main.temp_min > 70;
        return 
            'weatherdata-sun-hot': hot,
            'weatherdata-sun-normal': !hot
        ;
    

【讨论】:

感谢您的观点...我应该想到的 :-) 如此简单和好。祝你有美好的一天。

以上是关于angular入门篇(2)——*ngIf,数据绑定事件,属性绑定的主要内容,如果未能解决你的问题,请参考以下文章

Angular2:条件显示,绑定到 [hidden] 属性与 *ngIf 指令 [重复]

Angular 2 Performance:绑定数据成员比绑定函数更好吗?

Ionic 4 Angular模板与异步管道绑定到可观察

不能在 *ngFor 内使用 *ngIF :angular2 [重复]

前端MVVM框架之“Vue.js入门篇”

发生相同的问题:无法绑定到“ngIf”,因为它不是“div”的已知属性