Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | 1x 1x 1x 30x 30x 30x 30x 30x 20x 30x 20x 20x 20x 30x | import type { Content } from '../../angular-internal/ast.type';
import { NgContentMeta, NgNodeKind, NgNodeMeta, ParsedNode } from './interface';
const SELECT_NAME_VALUE_REGEXP = /^\[slot=["']?([^"']*)["']?\]$/;
export class ParsedNgContent implements ParsedNode<NgContentMeta> {
kind = NgNodeKind.Content;
constructor(
private node: Content,
public parent: ParsedNode<NgNodeMeta> | undefined,
public index: number
) {}
getNodeMeta(): NgContentMeta {
const nameAttr = this.node.attributes.find(
(item) => item.name === 'select'
);
let value: string | undefined;
if (nameAttr) {
const result = nameAttr.value.match(SELECT_NAME_VALUE_REGEXP);
Iif (!result) {
throw new Error(
`ng-content未匹配到指定格式的select,value:${nameAttr.value},需要格式为[slot="xxxx"]`
);
}
value = result[1];
}
return {
kind: NgNodeKind.Content,
name: value,
index: this.index,
};
}
}
|