Angular Web组件无法正常工作

时间:2018-06-29 09:35:47

标签: angular angular6 angular-elements

由于我想创建一个Web组件,所以我创建了一个简单的Angular 6项目。 (GitHub URL)。您可以使用git clone https://github.com/CSantosM/angular-elements-demo.git克隆存储库。

我已遵循this tutorial,并成功创建了Web组件。但是,当我使用JavaScript在另一个应用程序中测试此Web组件时,它无法完全正常工作。

问题是*ngIf="display" html github code中的button.component.ts

<div  *ngIf="display">
 <h3>Hello {{_userName}}</h3>
 <div class="button-row">
   <button mat-icon-button color="primary" (click)="toggleBlue()">
   <mat-icon aria-label="Example icon-button with a heart icon" 
      matTooltip="Like">favorite</mat-icon>
   </button>
 </div>
 <mat-icon *ngIf="blue">alarm</mat-icon>
</div>

在我的JavaScript应用located here中插入Web组件并动态更改输入Web组件,该按钮无法正常工作。

我的index.html是(github code):

<div id="main" style="text-align: center;">
    <h1>Insert your name</h1>
    <form onsubmit="sendName(); return false" style="padding: 80px; margin: auto">
        <p>
            <label>User:</label>
            <input type="text" id="user" value="User1" required>
        </p>
        <p>
            <input type="submit" value="JOIN">
        </p>
    </form>
</div>

<custom-button name=""></custom-button>

<!-- WebComponent JS -->
<script type='application/javascript' src='custom-button.js'></script>
<!-- WebComponent JS -->

<script>

    function sendName() {

        var user = document.getElementById('user').value;
        var ov = document.querySelector('custom-button');
        ov.userName = user;
    }

</script>

当我按下此应用程序的按钮时,将调用sendName()函数,并且userName input会发生变化,名为display角度变量会变为 true ,即可看到Web组件。 (github code

如果我不包含display变量,则Web组件将按预期工作。

在这里您可以看到该行为:

enter image description here

Angular是否已知错误?为什么使用简单的* ngIf,Web组件不能正常工作?如何解决呢?

谢谢。

1 个答案:

答案 0 :(得分:1)

我在有角github存储库中发布了该问题,他们为我提供的解决方法是here