0.1.1 • Published 5 years ago

ngx-init v0.1.1

Weekly downloads
70
License
-
Repository
github
Last release
5 years ago

NgxInit

Angular.js' ng-init directive for Angular.

This project was generated with Angular CLI version 8.3.18.

usage

The usage involves some boilerplate, but that's the best Angular currently has to offer

0) import NgxInitModule
0) a value expression is set via [ngxInit] on an ng-template and published into a variable name via let-<you-var-name>=ngxInit

Examples

simple

the following are equivalent (assuming i and j are defined in the context):

<div *ngxInit="3 * i + j as idx">{{idx}}</div>
<ng-container *nxgInit="3 * i + j as idx">
  <dt>{{idx}}</dt>
  <dd>this is the {{idx}} index</dd>
</ng-container>
<ng-template [ngxInit]="3 * i + j" let-idx="ngxInit">
  <dt>{{idx}}</dt>
  <dd>this is the {{idx}} index</dd>
</ng-template>

inside ngFor

In the simple case, this directive cannot be used inside ngFor because in angular we can't have multiple template bindings on one element. In order to bypass this limitation we can use either ng-container or ng-template

<!-- Error: can't have multiple template bindings on one element -->
<div *ngFor="let i of [0, 1, 2]" *nxgInit="i * i as sqr" (click)="onClick(sqr)">
  {{sqr}}
</div>

Workarounds:

<ng-container *ngFor="let i of [0, 1, 2]">
  <div *ngxInit="i * i as sqr" (click)="onClick(sqr)">{{sqr}}</div>
</ng-container>
<ng-template ngFor let-i [ngForOf]="[0, 1, 2]">
  <div *ngxInit="i * i as sqr" (click)="onClick(sqr)">{{sqr}}</div>
</ng-template>

with async pipe

<ng-container *ngxInit="(state$ | async) as state">
  <table id="board">
    <tr *ngFor="let i of [0, 1, 2]">
      <ng-container *ngFor="let j of [0, 1, 2]">
          <td *ngxInit="3 * i + j as id" [ngClass]="{active: isActive(state, id)}" (click)="clickCell(id)">{{state.G.cells[id]}}</td>
      </ng-container>
    </tr>
  </table>
</ng-container>
0.1.1

5 years ago

0.1.0

6 years ago

0.0.5

6 years ago

0.0.4

6 years ago

0.0.3

6 years ago

0.0.2

6 years ago

0.0.1

6 years ago