Populating derived fields in an Angular Dart component

前端 未结 2 1089
无人及你
无人及你 2021-01-20 12:56

I have a component that takes a single attribute. I want to populate a field in the component with a value that is derived from this attribute. I am running into the problem

2条回答
  •  后悔当初
    2021-01-20 13:32

    One possible solution is to ave the component implement NgAttachAware and define the attach() method. The value of the derived field can then be set inside attach(). I have no idea if there is a more idiomatic way to do this, but using attach() seems to work.

    Here is the code:

    import 'package:angular/angular.dart';
    
    @NgComponent(
        selector: 'tokens',
        templateUrl: './component.html',
        cssUrl: './component.css',
        publishAs: 'ctrl',
        map: const {
          'text' : '@text'
        }
    )
    class TokensComponent implements NgAttachAware {
      String text;
    
      // Derived field.
      List tokens = new List();
    
      TokensComponent() {
        print('inside constructor, text = $text');
      }
    
      void attach() {
        print('inside attach(), text = $text'); // $text is no longer null.
        text.split('').forEach((char) => tokens.add(new Token(char, false)));
      }
    }
    
    class Token {
      String char;
      bool important;
      Token(this.char, this.important);
    }
    

提交回复
热议问题