如何在角度添加ActiveX

时间:2018-07-03 13:07:31

标签: angular typescript

我在vscode上使用了angular6 + typescript。浏览器是IE11。

我的代码写在app.component.html上,无法运行。

html代码是:

<div>
  <div >
    <object ID="activexFirst" CLASSID="CLSID:xxxxx-xxx" width="300" height="200"></object>
  </div>
  <div>
    <object ID="activeSencod" classid="CLSID:xxxxx-xxx" width="600" height="500"></object>
  </div>
</div>

app.component.ts代码为:

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css'],
  encapsulation: ViewEncapsulation.None,
})
export class AppComponent implements AfterViewInit {
//todo..
}

但是可以在Index.html上写。 我该如何解决?

1 个答案:

答案 0 :(得分:0)

也许是角元素不同的本地html元素,现在可以了。 app.component.ts代码为:

 ngAfterViewInit(): void {

    ActiveX.SetActiveXHtml(this.tActive1Div);
  }

ActiveX.ts是

public static SetActiveXHtml(activeXDiv: ElementRef): void {
        let obj = document.getElementById('simplename') as any;
        if (obj == null) {
            obj = document.createElement('object');
            obj.name = 'name';
            obj.id = 'name';
            obj.classid = 'CLSID:xxxxxxxxxxxxxxxxx';
        }
        const cloneObj = obj.cloneNode(true);
        activeXDiv.nativeElement.appendChild(cloneObj);
    }

cloneNode方法非常重要!!!