javascript - Angular 7 bagaimana cara memasukkan skrip JS inline ke dalam komponen?


Saya ingin menginstal pustaka places.js ke dalam proyek Angular 7 saya, tetapi saya memiliki masalah. Saya telah menyertakan skrip berikut ke dalam file 'index.html' saya

 <script src="https://cdn.jsdelivr.net/npm/[email "></script>
  <script>
    var placesAutocomplete = places({
      appId: 'myAppId',
      apiKey: 'myApiKey',
      container: document.querySelector('#addressInput')
    });
  </script>

tetapi itu hanya berfungsi ketika saya memiliki

<input type="search" id="address-input" placeholder="Where are we going?" />

di 'index.html' saya. Saya sudah mencoba memasukkan input ini ke dalam komponen saya tetapi tidak berhasil dan saya mendapatkan error

[email :1 Uncaught Error: Algolia Places: 'container' must point to an <input> element.

Apakah mungkin untuk melampirkan skrip ini dan membuatnya berjalan? Dalam dokumentasi tidak ada yang tentang typescript. Saya juga sudah mencoba npm install dan

import * from 'places.js'

tapi mengalami masalah yang sama. Apakah ada yang bisa membantu?

Jawaban #1

Lebih baik menggunakannya tertanam dalam Komponen Angular:

import { Component, OnInit } from "@angular/core";
import places from "places.js";

@Component({
  selector: "app-root",
  templateUrl: "./app.component.html",
  styleUrls: ["./app.component.css"]
})
export class AppComponent implements OnInit {
  title = "my-app";

  ngOnInit(): void {
    const placesAutocomplete = places({
      appId: "appId",
      apiKey: "appKey",
      container: document.querySelector("#address-input")
    });
  }
}

Anda juga harus menempatkan ini di polyfill.js Anda agar berfungsi:

(window as any).process = {
  env: { DEBUG: undefined }
};

(window as any).global = window;

Jawaban #2

Saya mencoba caramu tetapi tidak berhasil.

Anda perlu mengunduh file places.js dan meletakkannya di folder skrip.

Perbarui file angular.json di builder > scripts

 "build": {
      "builder": "@angular-devkit/build-angular:browser",
      "options": {
        ...
        "assets": [...],
        "styles": [...],
        "scripts": [
          "script/places.js"
        ]
      },