Websharper:使用LI标签

Max*_*gel 5 f# websharper

我想创造这样的东西:

<ul>
    <li>menu1
         <ul>
             <li>sub-menu1</li>
         </ul>
    </li>
    <li>menu2</li>
</ul>
Run Code Online (Sandbox Code Playgroud)

所以我使用WebSharper编写以下代码:

let el =
        UL [
            LI [
                Text "menu1"
                UL [
                    LI [Text "sub-menu1"]
                ]
            ]
            LI [Text "menu2"]
        ]
Run Code Online (Sandbox Code Playgroud)

但它说

UL [
    LI [Text "sub-menu1"]
]
Run Code Online (Sandbox Code Playgroud)

应该有类型,IPagelet但目前有类型Element.

有没有人知道如何使用WebSharper在li元素下放置文本+其他东西?

编辑:只是说我有stakc的错误,我无法评论或接受@Tarmil的答案...

Tar*_*mil 8

这里的问题是,在同一个列表两个元素,Text "menu1"并且UL [...],具有类型IPageletElement分别.Element是一个子类型IPagelet,所以这应该工作,但不幸的是F#类型的推断在这种情况下有一些困难.所以你需要通过施法UL [...]来帮助它IPagelet:

let el =
    UL [
        LI [
            Text "menu1"
            UL [
                LI [Text "sub-menu1"]
            ] :> IPagelet
        ]
        LI [Text "menu2"]
    ]
Run Code Online (Sandbox Code Playgroud)

事实上,如果组合器具有类型seq<IPagelet> -> Element而不是类型,则可以消除这个问题seq<#IPagelet> -> Element.我们可能会将它们改为未来,但由于它将是一个重大改变,我们将把它保留到下一个主要版本.