方法

时间:2017-10-04 23:55:03

标签: angular

我的应用中有一个创建ActiveX对象的方法。在这种方法的响应中,我可以从我调用的站点访问我需要的数据。

我试图将该数据传递给组件中定义的变量,但由于某种原因,它无法访问它。

组件:

export class HomeComponent implements OnInit {

    adminData = [];
    action: string = '';

    test(){

        this.someMethod(
            {
                node: 'loaduserpage_home',
            },
            "http://someSite",
            "GET",
                (msg) => {

                // Create an element we can search though
                let body = document.createElement("div");
                body.innerHTML = msg.match(/<body>[\s\S]+?<\/body>/i);

                // Loop over inputs for demo
                let inputs = body.getElementsByTagName('input');

                // Loop over all inputs in the response and push their field name and value to our array
                for (let index = 0; index < inputs.length; ++index) {
                    this.adminData.push({inputName: inputs[index].name, inputValue: inputs[index].value })
                }

                this.action = 'Search Completed.';

            }, true)

    }

    someMethod(vars, varURL, varMethod, donext, async){
        // creates an active x object
    }

}

HTML:

<div class="container">
    <strong>Data</strong>

    <button (click)="test()" class="btn btn-primary">Run Active X</button>

    <table class="table" *ngIf="adminData.length">
        <thead>
            <th>Input Field Name</th>
            <th>Input Field Value</th>
        </thead>
        <tbody>
            <tr *ngFor="let a of adminData">
                <td>{{ a.inputName }}</td>
                <td>{{ a.inputValue }}</td>
            </tr>
        </tbody>
    </table>

</div>

如果我console.log(inputs[index].name),我需要的数据就好了。但是,当我尝试将数据推送到我的变量时,它似乎没有成功。

但是,如果我第二次点击此按钮(在我知道呼叫完成后),数据显示正常。

这是范围问题还是更改检测问题?

更新

似乎这可能是一个异步问题。如果我将其更改为同步,则数据显示正常(在浏览器停止冻结之后。但是,当异步时,它不会更新数据。我想知道在我们知道调用完成后是否需要实施更改检测?< / p>

0 个答案:

没有答案