代码之家  ›  专栏  ›  技术社区  ›  umeshkumar sohaliya

添加ul inside p标记时角度模板解析错误

  •  -1
  • umeshkumar sohaliya  · 技术社区  · 7 年前

    我正在开发演示项目,工作很好,如果我不添加UL标签内的P标签。

    工作代码:

    <p>
    <br/> Umesh test help <br/>
    </p>
    <ul>
    <li *ngFor="let user of help2Listdata">
        <a routerLink="/details/{{user.hid}}">{{ user.hid }}</a>
    
        <ul>
            <li><a href="http://{{ user.name }}">{{ user.name }}</a></li>
            <li>{{ user.ans }}</li>
        </ul>
    </li>
    </ul> 
    

    <p>
    <br/> Umesh test help <br/>
    
    <ul>
        <li *ngFor="let user of help2Listdata">
            <a routerLink="/details/{{user.hid}}">{{ user.hid }}</a>
    
            <ul>
                <li><a href="http://{{ user.name }}">{{ user.name }}</a></li>
                <li>{{ user.ans }}</li>
            </ul>
        </li>
    </ul>
    </p>
    

    错误跟踪:

    ERROR Error: Uncaught (in promise): Error: Template parse errors:
    Unexpected closing tag "p". It may happen when the tag has already been closed by another tag. For more info see https://www.w3.org/TR/html5/syntax.html#closing-elements-that-have-implied-end-tags ("
            </li>
        </ul>
    [ERROR ->]</p>"): ng:///Help2Module/Help2Component.html@13:0
    Error: Template parse errors:
    Unexpected closing tag "p". It may happen when the tag has already been closed by another tag. For more info see https://www.w3.org/TR/html5/syntax.html#closing-elements-that-have-implied-end-tags ("
            </li>
        </ul>
    [ERROR ->]</p>"): ng:///Help2Module/Help2Component.html@13:0
        at syntaxError (compiler.js:486)
        at DirectiveNormalizer.push../node_modules/@angular/compiler/esm5/compiler.js.DirectiveNormalizer._preparseLoadedTemplate (compiler.js:3222)
        at compiler.js:3202
        at Object.then (compiler.js:475)
        at DirectiveNormalizer.push../node_modules/@angular/compiler/esm5/compiler.js.DirectiveNormalizer._preParseTemplate (compiler.js:3202)
        at DirectiveNormalizer.push../node_modules/@angular/compiler/esm5/compiler.js.DirectiveNormalizer.normalizeTemplate (compiler.js:3180)
        at CompileMetadataResolver.push../node_modules/@angular/compiler/esm5/compiler.js.CompileMetadataResolver.loadDirectiveMetadata (compiler.js:14914)
        at compiler.js:34420
        at Array.forEach (<anonymous>)
        at compiler.js:34419
        at syntaxError (compiler.js:486)
        at DirectiveNormalizer.push../node_modules/@angular/compiler/esm5/compiler.js.DirectiveNormalizer._preparseLoadedTemplate (compiler.js:3222)
        at compiler.js:3202
        at Object.then (compiler.js:475)
        at DirectiveNormalizer.push../node_modules/@angular/compiler/esm5/compiler.js.DirectiveNormalizer._preParseTemplate (compiler.js:3202)
        at DirectiveNormalizer.push../node_modules/@angular/compiler/esm5/compiler.js.DirectiveNormalizer.normalizeTemplate (compiler.js:3180)
        at CompileMetadataResolver.push../node_modules/@angular/compiler/esm5/compiler.js.CompileMetadataResolver.loadDirectiveMetadata (compiler.js:14914)
        at compiler.js:34420
        at Array.forEach (<anonymous>)
        at compiler.js:34419
        at resolvePromise (zone.js:814)
        at resolvePromise (zone.js:771)
        at zone.js:873
        at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask (zone.js:421)
        at Object.onInvokeTask (core.js:4751)
        at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask (zone.js:420)
        at Zone.push../node_modules/zone.js/dist/zone.js.Zone.runTask (zone.js:188)
        at drainMicroTaskQueue (zone.js:595)
    

    请让我帮助你理解我为什么要面对这个问题。当我在inspect模式下看到工作代码输出时,它看起来很好,但是当更改标记树结构时,它会在浏览器控制台中抛出上面的错误。

    1 回复  |  直到 7 年前
        1
  •  2
  •   Lucas    7 年前

    实际上,根据w3c规范,ul标签不允许在p标签中使用。这将失败。尝试使用其他标记,如div或ng content。

    W3C spec ,p标记可以包含“短语元素”,这只能在以下标记中:

    a
    em
    strong
    small
    i
    b 
    

    See full list...

    推荐文章