Angular 6.1 и IE11. sui-accordion-panel не расширяется. Исключение: объект не поддерживает свойство или метод ‘animate’

#angular #typescript #semantic-ui #ng2-semantic-ui

#angular #typescript #семантический пользовательский интерфейс #ng2-semantic-ui

Вопрос:

<sui-accordion-panel> должен расширяться в IE11, но Object doesn't support property or method 'animate' вместо этого появляется ошибка в окне консоли IE.

Шаги

Я добавил <sui-accordion> вложенный <sui-accordion-panel> в одно из представлений. Код выглядит следующим образом:

 //... other components 
  <div [hidden]="!isCreateNewFlag">
    <sui-accordion>
      <sui-accordion-panel [isOpen]="false">
        <div title>
          <i class="dropdown icon"></i>
          <b>Additional options</b>       
        </div>
        <div content>
          <p>Upload initial answer file. (Select the template first.)</p>
          <app-file-uploader acceptedFormat=".anx" [isDisabled]="fileUploaderDisabled" [isFileValid]="isAnswerFileValid"
            (fileUploadedEvent)="onFileUploadedEvent($event)"></app-file-uploader>
        </div>
      </sui-accordion-panel>
    </sui-accordion>
  </div>

</app-form-modal>
  

То <app-file-uploader> , что я создал, здесь не проблема — даже если я удалю его из приведенного выше кода, у меня такая же проблема с компонентом accordion.

Ожидаемый результат

На скриншоте показано ожидаемое поведение в веб-браузере Chrome. изображение

Фактический результат

Функция расширения не работает в IE11: изображение

Версия

Вот как выглядит мой package.json:

 {
  "name": "hd",
  "version": "0.0.0",
  "license": "MIT",
  "scripts": {
    "ng": "ng",
    "start": "ng serve",
    "generate-api-client": "call ../../Build/GenerateApiClient.bat",
    "predevbuild": "cpx ./src/styles/theme.config ./node_modules/semantic-ui-less/",
    "devbuild": "ng build --output-hashing none",
    "prebuild": "cpx ./src/styles/theme.config ./node_modules/semantic-ui-less/",
    "build": "ng build --prod --output-hashing none",
    "watch": "ng build --output-hashing none --watch",
    "test": "ng test --sourceMap=false --watch false",
    "test-watch": "ng test --sourceMap=false",
    "lint": "ng lint",
    "e2e": "ng e2e"
  },
  "private": true,
  "dependencies": {
    "@angular/animations": "6.0.7",
    "@angular/common": "6.0.7",
    "@angular/compiler": "6.0.7",
    "@angular/core": "6.0.7",
    "@angular/forms": "6.0.7",
    "@angular/http": "6.0.7",
    "@angular/platform-browser": "6.0.7",
    "@angular/platform-browser-dynamic": "6.0.7",
    "@angular/router": "6.0.7",
    "core-js": "2.5.7",
    "date-fns": "1.29.0",
    "element-resize-detector": "1.1.14",
    "lodash-es": "4.17.10",
    "ng2-semantic-ui": "0.9.7",
    "rxjs": "6.2.1",
    "semantic-ui-calendar": "0.0.8",
    "semantic-ui-less": "2.3.3",
    "zone.js": "0.8.26"
  },
  "devDependencies": {
    "@angular-devkit/build-angular": "0.6.8",
    "@angular/cli": "6.0.8",
    "@angular/compiler-cli": "6.0.7",
    "@angular/language-service": "6.0.7",
    "@types/element-resize-detector": "1.1.0",
    "@types/jasmine": "2.8.8",
    "@types/jasminewd2": "2.0.3",
    "@types/lodash-es": "4.17.0",
    "@types/node": "10.5.3",
    "codelyzer": "4.4.2",
    "cpx": "1.5.0",
    "jasmine": "3.1.0",
    "jasmine-core": "3.1.0",
    "jasmine-spec-reporter": "4.2.1",
    "karma": "2.0.4",
    "karma-chrome-launcher": "2.2.0",
    "karma-cli": "1.0.1",
    "karma-coverage-istanbul-reporter": "2.0.1",
    "karma-jasmine": "1.1.2",
    "karma-jasmine-html-reporter": "1.2.0",
    "less": "2.7.3",
    "protractor": "5.3.2",
    "ts-node": "7.0.0",
    "tslint": "5.10.0",
    "typescript": "2.7.2"
  }
}
  

Есть ли у вас какие-либо идеи, что может быть не так, и есть ли какое-либо решение этой проблемы?
Приветствия

Ответ №1:

Используется <sui-accordion> Web Animations API , который поддерживается не всеми браузерами. Они сообщают об этом в своих документах здесь:

Чтобы лучше решить эту проблему в angular, я предлагаю добавить это в ваш polyfill.ts файл (возможно, он уже там прокомментирован):

 import 'web-animations-js';  
  

Чтобы это сработало, вам нужно запустить: npm install --save web-animations-js .

Вы можете проверить живой пример здесь:

https://stackblitz.com/edit/angular-stack-55650439?file=src/polyfills.ts