angular 中指令能实现正则吗?

发布于 2022-09-12 02:38:35 字数 109 浏览 18 评论 0

我现在想写一个在模板中申明临时变量的指令,可以像ng-template那样let-name="";但是我试了一下不可用[let-*]来实现,那ng-template中的let-是怎么搞的呢?
求指导

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

只怪假的太真实 2022-09-19 02:38:35

Angularng-templatelet不是声明临时变量的。

  • let-xxx 是暴露ngTemplateOutletContext中的$implicit属性作为模板变量
  • let-xxx="foo" 是暴露ngTemplateOutletContext中的foo属性作为模板变量

参考资料:

  1. https://angular.io/api/common...
  2. https://stackoverflow.com/que...
谷夏 2022-09-19 02:38:35
import { Directive, ViewContainerRef, TemplateRef, Input } from '@angular/core';

@Directive({
  selector: '[let]'
})
export class ExpAsDirective {
  _context: any = {name: 'wei', tt: '1ttvalue   '};
  private _thenTemplateRef: TemplateRef<any>|null = null;
  @Input() public set letContext(val) {
    this._context = val;
    this._updateView();
  }
  constructor(private _viewContainer: ViewContainerRef, templateRef: TemplateRef<any>) {
    this._thenTemplateRef = templateRef;
  }
  private _updateView() {
    this._viewContainer.clear();
    this._viewContainer.createEmbeddedView(this._thenTemplateRef, this._context);
  }
}

使用


<div *let="let tt = tt;let age1 = age;context: {tt: name, age: 12}">{{tt}}-------{{age1}}</div>
<input [(ngModel)]="name">

就是比较麻烦

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文