角度结构指令上下文模板类型检查

2024-03-14

我似乎无法使角度模板自动完成工作,任何人都可以帮助我理解我错过了什么或做错了什么吗?

<div *ngVar="ok as xd">
    <!-- xd is not giving any autocomplete / typecheck, hover giving "any" type -->
    {{ xd.item }}
</div>

我几乎继续研究 ngIf 和异步管道源代码,试图了解正在发生的事情,并制定了这个简单的指令,只是为了方便我的异步订阅生活(这对 ngIf 来说有点痛苦)。
没有类型安全同样是一种痛苦 x)

type NgVarContext<T> = { ngVar: T; $implicit: undefined };

@Directive({
    selector: "[ngVar]",
})
export class NgVar<T> {
    context: NgVarContext<T> = { ngVar: undefined, $implicit: undefined };
    _subscription: Subscription;

    constructor(
        private cdr: ChangeDetectorRef,
        template: TemplateRef<NgVarContext<T>>,
        viewContainer: ViewContainerRef
    ) {
        viewContainer.createEmbeddedView(template, this.context);
    }

    @Input()
    set ngVar(input: Observable<T>) {
        if (this._subscription) return;
        this._subscription = input.subscribe((item) => {
            if (item !== this.context.ngVar) {
                this.context.ngVar = item;
                this.cdr.markForCheck();
            }
        });
    }

    static ngTemplateGuard_ngVar: "binding";

    static ngTemplateContextGuard<T>(dir: NgVar<T>, ctx: NgVarContext<T>): ctx is NgVarContext<T> {
        return true;
    }
}


只是如果您不知道(将其写为答案,因为我无法以

See: https://twitter.com/angular/status/1357403631901937672 https://twitter.com/angular/status/1357403631901937672

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

角度结构指令上下文模板类型检查 的相关文章

随机推荐

  • countForFetchRequest 对于空表返回 1

    我正在执行 countForFetchRequest 它总是返回比表中记录数多 1 的计数 NSFetchRequest request NSFetchRequest alloc init request setEntity NSEntit
  • 如何修复“AVDRegister - AppleAVDCheckPlatform() 返回 FALSE”

    我使用此代码来检查我的 iPhone 是否支持 hevc 硬解码 BOOL hardwareDecodeSupported VTIsHardwareDecodeSupported kCMVideoCodecType HEVC 但在控制台上我
  • Silverlight 请求、失败和 Fiddler

    我有一个发出跨域请求的 Silverlight 应用程序 clientaccesspolicy xml 文件存在于我发出请求的服务器上并且配置正确 我知道它配置正确 因为当我使用该应用程序发出请求时我的机器我收到了没有问题的回复 当大约 3
  • 在 React 上导入多个图像

    我正在尝试构建一个反应应用程序 并且必须使用多个图像 现在我必须导入我将使用的每个图像 例如 import image from img img1 png img src img 或者还有其他方法吗 PS 我尝试过 require 它也给出
  • 常量 Flask 会话 ID

    I ve a Flask应用程序 使用 Nginx WSGI FastCGI 和 Gevent 提供服务并使用标准 Flask 会话 我愿意not使用session permanent True或任何其他额外选项 但只需设置SECRET K
  • 在 Python 中打印“批准”符号/复选标记 (✓) U+2713

    如何在Python中打印复选标记 这是批准的标志 而不是平方根 您可以使用转义序列打印任何 Unicode 字符 确保创建一个 Unicode 字符串 print u u2713
  • git 中预推送和预接收钩子的区别?

    git 中的预推送和预接收钩子在用例或工作逻辑方面有区别吗 我能理解的唯一区别是他们文档 https github com git git blob master Documentation githooks txt L211就他们收到的输
  • 是否可以定义相互依赖的类型并在单独的文件中定义?

    我正在尝试实现一个具有扩展解析功能的库 我决定使用 fsyacc 因为我从大学就知道它 不幸的是我遇到了以下问题 我为我的语法头部定义了一个类 Head 并将其实现放在一个文件中 然后我将解析器定义为 start head type hea
  • 最小元素错误

    我不是 C 编码员 所以也许这很容易 我有一个 Point 类向量 我想找到 AABB 矩形 最小 x 最小 y 最小 x 最大 y 最大 x 最小 y 最大 x 最大 y 我已经完成了一个 for 循环 保存最小值和最大值 一次用于 x
  • 强制链接与库不同的 SONAME

    如何以与具有冲突 SONAME 的库的两个现有版本兼容的方式链接二进制文件 这两个版本不共享相同的 SONAME 前缀 一个是 libcapi10 so 3 另一个是 libcapi10 so 4 我无法重新编译它们 因为我将它们作为二进制
  • 在Python中反转列表切片

    我试图在 python 中反转列表的切片 但它返回一个空列表 但是当我尝试使用整个列表时 它工作得很好 我在这里错过了什么吗 l 1 2 3 4 5 6 7 8 l 1 8 7 6 5 4 3 2 1 lt lt lt This worke
  • Flink CEP:对于不同类型的事件,使用哪种方法加入数据流?

    假设我有两种不同类型的数据流 一种提供天气数据 另一种提供车辆数据 我想使用 Flink 对数据进行复杂的事件处理 Flink 1 3 x 中哪种方法是正确的使用方法 我看到了不同的方法 如 Union Connect Window Joi
  • 获取 iframe 的源代码

    有没有办法获取 iframe 加载的页面的源代码 我不想更改任何代码 我只想阅读它 我还需要能够使用 javascript html 来获取它 document getElementById iframeID contentWindow d
  • Swift 2 中“kGMSMarkerAnimationPop”错误的使用不明确

    我在尝试为 GMSMarker 制作动画时遇到错误 我已遵循 Google 文档和各种指南 但它不断返回错误 下面是我的代码 func placeMarker coordinate CLLocationCoordinate2D if loc
  • g++ 链接问题:对函数的未定义引用

    我使用 CMake 和 Visual C 构建 HyDE 库 然后 仍然在 VC 中 我能够成功创建代码并构建链接到 HyDE lib 和 HyDE 头文件的可执行文件 然后我发现 为了与我公司的其他人一起工作 最好在 Eclipse CD
  • 复选框树

    我正在寻找 Javascript 的 复选框树 小部件 我尝试使用jquery 检查树 http jquery checktree googlecode com 其声称完全符合我的要求 但它存在以下问题 它无法识别已选中的复选框 并将所有内
  • 查找用户是否是 Active Directory 组 ASP.NET VB 的成员?

    我正在使用 Active Directory 对 Intranet 站点的用户进行身份验证 我想根据用户在 Active Directory 中所在的组来优化经过身份验证的用户 有人可以向我展示或指出如何在 ASP NET 4 0 VB 中
  • 在 Angular 2 中使用 ngForTemplate 时绑定事件

    假设我有这个简单的列表渲染组件 import Input Component from angular2 core Component selector my list template div item div class MyList
  • 为什么编译器会优化掉由于 strncmp() 而导致的共享内存读取,即使使用了 volatile 关键字?

    这是一个程序foo c将数据写入共享内存 include
  • 角度结构指令上下文模板类型检查

    我似乎无法使角度模板自动完成工作 任何人都可以帮助我理解我错过了什么或做错了什么吗 div xd item div 我几乎继续研究 ngIf 和异步管道源代码 试图了解正在发生的事情 并制定了这个简单的指令 只是为了方便我的异步订阅生活 这