I thought I would update this since I was able to at least work around this 
issue. I was unable to use *FormBuilder *at all. I could never get past the 
exceptions that I keep seeing. However, I was able to use *ControlGroup 
*directly 
and use *ng-form-model* in the template. Here is what worked for me, 
although I also had to tweak the *angular2.d.ts* file since *ControlGroup *and 
*Control *seemed to have incomplete descriptions:

<form [ng-form-model]="echoStuff" (submit)="echoSubmit(echo_input_ref.value)" 
class="form-inline">
    <div class="form-group" 
[class.has-success]="echoStuff.controls.echoText.valid"
         [class.has-error]="!echoStuff.controls.echoText.valid">
        <label for="txtEcho">Echo:</label>
        <input id="txtEcho" ng-control="echoText" autofocus #echo_input_ref 
type="text"
               placeholder="(echo input)" 
(input)="txtEchoInput(echo_input_ref.value)" class="form-control"/>
    </div>
    <button id="echoBtn" type="submit" [disabled]="!echoStuff.valid" class="btn 
btn-primary">Submit</button>
    <div *ng-if="!echoStuff.controls.echoText.valid" class="alert alert-danger" 
role="alert">
        {{echoStuff.controls.echoText.errors.msg}}
    </div>
</form>


@Component({
    selector: "echo"
})
@View({
    templateUrl: "ui/echo/echoA2.html",
    directives: [formDirectives, NgIf, CSSClass]
})
export class EchoCmpA2 extends AppCmpBaseA2
{
    echoResult: string = "";
    private echoStuff: ControlGroup;

    constructor(private echoService: EchoService)
    {
        super();

        console.log("EchoCmpA2");

      // echoStuff is a ControlGroup of a set of Controls that can be validated 
as a group
      // This is a StringMap whose key is a ng-control reference from the 
template
      this.echoStuff = new ControlGroup({echoText: new Control("TestMe", 
this.validateEchoText)});
    }

  /**
   * Validator function for echo input control
   * @param c Control being validated
   * @returns {any} null if OK, or some kind of error object.
   * In this example, the error object contains a msg string with the type of 
error
   */
  validateEchoText(c: Control): any
  {
    var s: string = c.value.toString();
    if (s.length === 0)
    {
      return {msg: "Input is required"};
    }

    if (s.length > 10)
    {
      return {msg: "Input length must be 10 characters or less"};
    }

    var re = /^[a-zA-Z]+$/;
    if (!s.match(re))
    {
      return {msg: "Only letters are allowed"};
    }

    return null;
  }



-- 
You received this message because you are subscribed to the Google Groups 
"AngularJS" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to angular+unsubscr...@googlegroups.com.
To post to this group, send email to angular@googlegroups.com.
Visit this group at http://groups.google.com/group/angular.
For more options, visit https://groups.google.com/d/optout.

Reply via email to