[Angualr 2] Watch for changes

You can watch for form / control changes by using .valueChanges.observe({...}):

        this.sku.valueChanges.observer({
            next: (value)=>{
                console.log("sku has changed to: " , value);
            }
        })

        this.myForm.valueChanges.observer({
            next: (value)=>{
                console.log("form has change to: ",value);
            }
        })

Code:

import {Component, View, FORM_DIRECTIVES, Validators, FormBuilder, NgIf} from ‘angular2/angular2‘;

@Component({
    selector: ‘demo-form-sku‘
})
@View({
    directives: [FORM_DIRECTIVES, NgIf],
    template: `
       <div>
        <h2>Demo Form: Sku</h2>
        <!-- ngForm is attched to the form, and #f="form" form is also come from ngForm-->
        <form [ng-form-model]="myForm"
        (submit)="onSubmit(myForm.value)">
            <div class="form-group" [class.has-error]="!sku.valid && sku.touched">
                <label for="skuInput">SKU</label>
                <input type="text"
                class="form-control"
                id="skuInput"
                #sku = "form"
                placeholder="SKU"
                [ng-form-control]="myForm.controls[‘sku‘]">
            </div>
            <div *ng-if="!sku.control.valid"
               class="bg-warning">SKU is invalid</div>
            <button type="submit" class="btn btn-default">Submit
            </button>
            <div *ng-if="sku.control.hasError(‘invalidSku‘)">
                SKU is required
            </div>

        </form>
        <div *ng-if="!myForm.valid"
              class="bg-warning">Form is invalid</div>
       </div>
    `
})

export class DemoFormSku {
    myForm: ControlGroup;
    constructor(fb:FormBuilder) {
        this.myForm = fb.group({
            "sku": ["", Validators.compose([
                Validators.required,
                skuValidator
            ])]
        });
        this.sku = this.myForm.controls[‘sku‘];

        this.sku.valueChanges.observer({
            next: (value)=>{
                console.log("sku has changed to: " , value);
            }
        })

        this.myForm.valueChanges.observer({
            next: (value)=>{
                console.log("form has change to: ",value);
            }
        })
    }

    onSubmit(value){
        console.log(value);
    }

    function skuValidator(control){
         if(!control.value.match(/^123/)){
             return {invalidSku: true};
         }
    }
}
时间: 2024-08-05 14:58:51

[Angualr 2] Watch for changes的相关文章

《小白滴滴系列》-angualr的带参数跳转

angualr跳转有两种方式(我知道的): 1.ui-sref:后面跟上状态名,有参数的话在状态名后面添加 <a ui-sref="TopicComments({ID:list.ID})">查看及回复</a><br /> 2.利用$state:参数分别是:状态的名字(注意是状态不是路由的名称),跳转的参数,跳转的时候刷新 $state.go('salaryDetail', { Time: paTime }, { reload: true }); 注意

小谈angualr $q

以一个$()请求为例代码如下 $http({ method:'GET', url:'../temp.json' }).then(function(data) { // data为返回的数据对象 console.log('请求成功'); }, function(err) { // err为请求失败后返回的错误信息 console.log('请求失败'); } ); 以上代码使用angualr内置的$http函数发起一个get请求,then方法可以传入两个回掉函数,这个没什么谈的,当然还可以有下面的

单页面跳转添加返回和跳转动画(仿app) 只对单页面和跳转有用,我用的是angualr,有不会的可以私信问我。

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Consolas; color: #596972 } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Consolas; color: #2eafa9 } p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Consolas; color: #97a700 } span.s1 {

angualr 之 $$phase

对于angular, $$phase 是 作为angular 内部状态表示位,用来标示当前是处于哪个阶段. 用有的阶段有 $digest $apply 在使用的是例如你想调用scope.$apply的时候,经常会遇到这样的错误 Error:$apply already in progress 为了预防这样的错误, 有人是这么写的 if (!scope.$$phase && !scope.$root.$$phase){//脏值检测     scope.$apply();   } 一个合理的做

angualr项目table拖拽列宽效果

首先要有一个table的html列表 我就不上了,因为加载有异步的问题,所以我把js代码放到一个封装函数里面,表格加载出来之后调用函数,这个表格的dom就能找到了.下面是封装的js代码 //拖拽调整列宽 $rootScope.searchTable= function(){ var tTD; //用来存储当前更改宽度的Table Cell,避免快速移动鼠标的问题 var table = document.getElementsByClassName('table'); console.log(t

angualr之chart.js图表

1.图表出现负数 chartOptions = { maintainAspectRatio: false, scales: { yAxes: [{ ticks: { suggestedMin: 0, suggestedMax: 10 } }] } } 2. @@ -515,11 +515,16 @@     -webkit-box-flex: 1;     }     :host >>> p-chart div:first-child .chartjs-hidden-iframe{  

angualr $http 页面传参问题

POST 请求传参 $http({ method: "POST", url: url, data: { "role_id": 1, "telephone": $scope.setData.telephone, "user_pwd": $scope.setData.user_pwd }, headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, trans

windows 下运行angualr/material2 项目

第一步:到github上clone  angular/material2 项目 第二步:npm install 第三步: 打开git bash (cmd 或 powershell 是无法成功运行该项目的) 第四部:运行 npm install gulp 第五步:运行 gulp material:build 第六步:运行 gulp serve:devapp

react和angualr动态插入带html标签或不带html标签的数据

let content = '';//content是后台返回的未知的一长串字符串,可能是'<p>内容<div>一个div</div></p>',也可能是'内容\r\n任何格式' let reg = new RegExp('^<([^>\s]+)[^>]*>(.*?<\/\\1>)?$'); let format = reg.test(content); //content有可能是有格式的(带html标签),也可能无格式