Почему Angular app- root не обнаруживается в плагине Wordpress? - PullRequest
1 голос
/ 17 января 2020

Я работаю над проектом, который требует Angular для загрузки в плагин Wordpress, и у меня возникает ошибка с:

main-es5.js?ver=5.3.2:1 ERROR Error: The selector "app-root" did not match any elements
    at e.value (main-es5.js?ver=5.3.2:1)
    at yi (main-es5.js?ver=5.3.2:1)
    at ji (main-es5.js?ver=5.3.2:1)
    at Ni (main-es5.js?ver=5.3.2:1)
    at Object.Xi [as createRootView] (main-es5.js?ver=5.3.2:1)
    at t.value (main-es5.js?ver=5.3.2:1)
    at t.value (main-es5.js?ver=5.3.2:1)
    at e.value (main-es5.js?ver=5.3.2:1)
    at main-es5.js?ver=5.3.2:1
    at Array.forEach (<anonymous>)

Код плагина:

<?php
/*
* Plugin Name: Example
* Description: description
* Version: 1.0
* Author: Some guy
* Author URI: www.website.com
* Test Domain: pluginname
*/

wp_register_script( 'example_main5_js', plugins_url('/hello-app/main-es5.js', __FILE__));
wp_register_script( 'example_main2015_js', plugins_url('/hello-app/main-es2015.js', __FILE__));
// wp_register_script( 'example_poly5_js', plugins_url('/hello-app/polyfills-es5.js', __FILE__));
// wp_register_script( 'example_poly2015_js', plugins_url('/hello-app/polyfills-es2015.js', __FILE__));
wp_register_script( 'example_run5_js', plugins_url('/hello-app/runtime-es5.js', __FILE__));
wp_register_script( 'example_run2015_js', plugins_url('/hello-app/runtime-es2015.js', __FILE__));


function example_enqueue_script() {
  wp_enqueue_script('example_main5_js');
  wp_enqueue_script('example_main2015_js');
  // wp_enqueue_script('example_poly5_js');
  // wp_enqueue_script('example_poly2015_js');
  wp_enqueue_script('example_run5_js');
  wp_enqueue_script('example_run2015_js');
}

add_action('wp_enqueue_scripts', 'example_enqueue_script');



function example_test_function() {

echo '<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>HelloApp</title>
  <base href="/">
  <meta name="viewport" content="width=device-width, initial-scale=1">
<body>
  <app-root></app-root>
</body>
</html>';
}

add_action( 'wp_footer', 'example_test_function');
?>

Я проконсультировался с предыдущими темами по этой теме c, и все правильно объявлено в селекторе и т. Д .; Эта чистая Angular версия работает без проблем в тестах как в рабочей среде, так и в среде разработки.

1 Ответ

1 голос
/ 17 января 2020

Тег <script>, который загружает Angular связки JavaScript , должен следовать после элемента <app-root> в HTML. JavaScript выполняется после загрузки, и если остальная часть Html не была загружена, селектор не сможет найти <app-root>.

Если вы не можете переместить тега <script>, затем вы можете использовать атрибут defer для запуска JavaScript после чтения документа Html.

<script src="javascript.js" defer></script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...