Dichiarare variabili neiテンプレートに対する角のuna direttivaにおいて来てください
32016 ワード
Volte Sarebbe Utile Poter Dichiarare variabili neiのテンプレートHTML dei component , ad esempio , imaverinio di avere un osservabile , il cui valore va visualzato pi pino del nostro template , na delle possibili soluzioniθquale di sottoscrivere pi . volte l ososabile , usando la pipe
インプットの中のパラフレーズとは何か
Physamo Quitaal - a a a a a piilizza e al - pieno . della direttivazazone della direttivazazone della direttivazazone della direttivazazone della direttivazazone della direttivazazone della direttivazazone della direttivazazone della direttivazazone della direttivazazone della direttivazazone della direttivazazone
Quando La Nostra direttiva SAR
LINK
<資料> 国立天文台https://www.npmjs.com/package/ng-let
ギタブhttps://github.com/nigrosimone/ng-let
async
, <研究ノート>パフォーマンスに関する一考察import { Component } from '@angular/core';
import { Observable, timer } from 'rxjs';
@Component({
selector: 'app-root',
template: `
<ul>
<li>{{ timer$ | async }}</li><!-- prima sottoscrizione -->
<li>{{ timer$ | async }}</li><!-- seconda sottoscrizione -->
</ul>
`,
})
export class AppComponent {
public timer$: Observable<number> = timer(3000, 1000);
}
Oppure Si Potrebbe Cauty Nuna Singola Sottoscrizione e Geskil il Tutto Conn unun Periet et esesa al Template , Connun Notevole Aumento del Codites : Geesil il Tuttoimport { Component, OnInit } from '@angular/core';
import { Observable, timer, Subscription } from 'rxjs';
@Component({
selector: 'app-root',
template: `
<ul>
<li>{{ time }}</li>
<li>{{ time }}</li>
</ul>
`,
})
export class AppComponent implements OnInit, OnDestroy {
public time: number;
private timer$: Observable<number> = timer(3000, 1000);
private subscription: Subscription;
ngOnInit(){
// singola sottoscrizione
this.subscription = this.$timer.subscribe(value => this.time = value);
}
ngOnDestroy(){
this.subscription.unsubscribe();
}
}
<研究ノート>二重における二重性の可能性についてimport { Component } from '@angular/core';
import { Observable, timer } from 'rxjs';
@Component({
selector: 'app-root',
template: `
<!-- singola sottoscrizione -->
<ng-container *ngLet="timer$ | async as time">
<ul>
<li>{{ time }}</li>
<li>{{ time }}</li>
</ul>
</ng-container>
`,
})
export class AppComponent {
public timer$: Observable<number> = timer(3000, 1000);
}
Vediamo quindi来るrealizzarla!インプットの中のパラフレーズとは何か
import { Directive, Input } from '@angular/core';
@Directive({
selector: '[ngLet]'
})
export class NgLetDirective {
@Input()
set ngLet(value: any) {
}
}
<論文>インプット・ギアスにおける「パス・フォ・ヴァルレ・パッタート」について<div *ngLet="1 + 1 as sum">
{{ sum }}
</div>
Outtenerlo Dobbiamo Rendere , Noesta dimettiva strutturale , questo ci permetter alla stra turutura ( il tag sul quale sor gggiata ) un "contesto "che conpoo "no uno stato interno e quindi memorizzare unvalore che sar . poi access irton conas
:<div *ngLet="1 + 1 as sum">{{ sum }}</div>
<研究ノート> Nanhiarazioneについてlet
:<div *ngLet="1 + 1; let sum">{{ sum }}</div>
エストラーヌ・ラ・ノストラーストラー・ストラットヴァーラ著『アシュアモ・イ・コン・ディ・クレア』、『アル・インター・デ・ヴィラ・コルレンテ』、『アル・ホテ・デ・ヴィラ』import { Directive, Input } from '@angular/core';
@Directive({
selector: '[ngLet]'
})
export class NgLetDirective {
constructor(
private viewContainer: ViewContainerRef,
private templateRef: TemplateRef<any>) { }
@Input()
set ngLet(value: any) {
}
}
<研究ノート>第二次世界大戦におけるテンプレートの構成とその意味import { Directive, Input, TemplateRef, ViewContainerRef } from '@angular/core';
@Directive({
selector: '[ngLet]'
})
export class NgLetDirective {
private context = { ngLet: null, $implicit: null };
constructor(
private viewContainer: ViewContainerRef,
private templateRef: TemplateRef<any>) { }
@Input()
set ngLet(value: any) {
this.context.$implicit = this.context.ngLet = value;
this.viewContainer.createEmbeddedView(this.templateRef, this.context);
}
}
E '重要なChee IL Contesto、前提となる所有権のない{
ngLet: any;
$implicit: any;
}
ハト$implicit
二分法による二重引用let
, esempio :<div *ngLet="1 + 1; let sum">{{ sum }}</div>
メントレアの所有者ngLet
<論説>アル・コンテリオの悲劇as
, esempio :<div *ngLet="1 + 1 as sum">{{ sum }}</div>
エステに対するQuesto Punto Dobbiamo di creare ilテンプレートset ngLet(value: any)
) ビエンインゴート、クインディAggiungiamo国連旗hasView
1つのcreare una sola volta ilテンプレート:import { Directive, Input, TemplateRef, ViewContainerRef } from '@angular/core';
@Directive({
selector: '[ngLet]'
})
export class NgLetDirective {
private context = { ngLet: null, $implicit: null };
private hasView: boolean = false;
constructor(
private viewContainer: ViewContainerRef,
private templateRef: TemplateRef<any>) { }
@Input()
set ngLet(value: any) {
this.context.$implicit = this.context.ngLet = value;
if (!this.hasView) {
this.viewContainer.createEmbeddedView(this.templateRef, this.context);
this.hasView = true;
}
}
}
Potremmo Essenere soddisfatti del risultato gi se cos cos , ma la la nostra direttiva avrebbe una ppecca,il valore restiitto non sarebbe tipicbzato e quindi risulterebbe el template ununany
. Physamo Quitaal - a a a a a piilizza e al - pieno . della direttivazazone della direttivazazone della direttivazazone della direttivazazone della direttivazazone della direttivazazone della direttivazazone della direttivazazone della direttivazazone della direttivazazone della direttivazazone della direttivazazone
Quando La Nostra direttiva SAR
<div *ngLet="1 as value">{{ value }}</div>
ダオチェ1
杜運number
イルTipoパパスAllaクラスnumber
:new NgLetContext<number>();
<研究ノート> Chiamememoに対する批判的考察T
, Thepicizzare Tutto IL Nostro ContestoにおけるSua Voltaの利用法import { Directive, Input, TemplateRef, ViewContainerRef } from '@angular/core';
interface NgLetContext<T> {
ngLet: T;
$implicit: T;
}
@Directive({
selector: '[ngLet]'
})
export class NgLetDirective<T> {
private context: NgLetContext<T | null> = { ngLet: null, $implicit: null };
private hasView: boolean = false;
constructor(
private viewContainer: ViewContainerRef,
private templateRef: TemplateRef<NgLetContext<T>>) { }
@Input()
set ngLet(value: T) {
this.context.$implicit = this.context.ngLet = value;
if (!this.hasView) {
this.viewContainer.createEmbeddedView(this.templateRef, this.context);
this.hasView = true;
}
}
}
Tuttavia Questo非Bestaモーチェルアイビーfaccia国連運航del tipo passato e quindi ottenere tutti i vantaggi di aver tipicizzato il nostro contestoの料金<研究ノート>ダルビーム・アギンガージェーナにおけるティヴォーエの統語論static ngTemplateGuard_ngLet: 'binding';
<研究ノート>第二次世界大戦における権力者としての行為:第二次世界大戦後のヴェトナムにおける支配権true
パーチ・シオ・シモctx
) SAR - Ang sempre del TipoT
パスパルトゥー・クラスstatic ngTemplateContextGuard<T>(dir: NgLetDirective<T>, ctx: any): ctx is NgLetContext<Exclude<T, false | 0 | '' | null | undefined>> {
return true;
}
Il risultatoフィナーレimport { Directive, Input, TemplateRef, ViewContainerRef } from '@angular/core';
interface NgLetContext<T> {
ngLet: T;
$implicit: T;
}
@Directive({
selector: '[ngLet]'
})
export class NgLetDirective<T> {
private context: NgLetContext<T | null> = { ngLet: null, $implicit: null };
private hasView: boolean = false;
constructor(
private viewContainer: ViewContainerRef,
private templateRef: TemplateRef<NgLetDirective<T>>) { }
@Input()
set ngLet(value: T) {
this.context.$implicit = this.context.ngLet = value;
if (!this.hasView) {
this.viewContainer.createEmbeddedView(this.templateRef, this.context);
this.hasView = true;
}
}
static ngTemplateGuard_ngLet: 'binding';
static ngTemplateContextGuard<T>(dir: NgLetDirective<T>, ctx: any): ctx is NgLetContext<Exclude<T, false | 0 | '' | null | undefined>> {
return true;
}
}
Stackblitzを守ってくださいLINK
<資料>
Reference
この問題について(Dichiarare variabili neiテンプレートに対する角のuna direttivaにおいて来てください), 我々は、より多くの情報をここで見つけました https://dev.to/nigrosimone/come-creare-in-angular-una-direttiva-per-dichiarare-variabili-nei-template-html-dei-componenti-62aテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol