gpt4 book ai didi

angular - Angular编译器如何处理多个同名模板引用变量

转载 作者:行者123 更新时间:2023-12-04 17:49:35 26 4
gpt4 key购买 nike

我想开始为 Angular 做贡献,我有一个功能的想法,如果模板包含两个同名的模板变量,我希望模板编译器发出警告。我想我设法接近负责的源文件:https://github.com/angular/angular/blob/master/packages/compiler/src/view_compiler/view_compiler.ts但无法完全找到地点,这是可以理解的。这里有没有人可以指导我?

最佳答案

您需要查看 _assertNoReferenceDuplicationOnTemplate方法:

  _assertNoReferenceDuplicationOnTemplate(result: TemplateAst[], errors): void {
const existingReferences: string[] = [];

result.filter(element => !!(<any>element).references)
.forEach(element => (<any>element).references.forEach((reference: ReferenceAst) => {
const name = reference.name;
if (existingReferences.indexOf(name) < 0) {
existingReferences.push(name);
} else {
const error = new TemplateParseError(
`Reference "#${name}" is defined several times`, reference.sourceSpan,
ParseErrorLevel.ERROR);
errors.push(error);
}
}));
}

Angular 编译器创建一个节点类型为 ElementAST 的 AST它具有 references 属性:

export class ElementAst implements TemplateAst {
constructor(
public name: string,
public references: ReferenceAst[],
...

这是在 _assertNoReferenceDuplicationOnTemplate 函数中检查的属性,如果找到,则会生成错误。

关于angular - Angular编译器如何处理多个同名模板引用变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46204679/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com