Bộ chọn “ứng dụng của tôi” không khớp với bất kỳ phần tử nào


85

Vấn đề là khi tôi chạy ứng dụng của mình, nó hoạt động tốt. Nhưng khi tôi làm mới nó, hầu hết thời gian tôi nhận được dưới dạng tin nhắn.

Bộ chọn "ứng dụng của tôi" không khớp với bất kỳ phần tử nào

Nhưng điều kỳ lạ là nhiều khi tôi làm mới ứng dụng của mình, nó cũng hoạt động.

Vì vậy, cuối cùng tôi có một hành vi lạ của ứng dụng của mình và không thể tìm ra điều này.
Đôi khi nó hoạt động đôi khi không ...

Bất kỳ đề nghị, không thể nghĩ ra mã ???

Lưu ý: Tôi chưa có cấu trúc hoặc thành phần phức tạp nhưng thực hiện đơn giản.


đăng thông báo lỗi đầy đủ hoặc một trong hai phần mã hoặc my-appthành phần.
Pardeep Jain

Trong IE11 - Potentially unhandled rejection [2] The selector "micropuppy-app" did not match any elementsvà trong FF- 'EXCEPTION: Bộ chọn "ứng dụng của tôi" không khớp với bất kỳ phần tử nào BaseException @ cdnjs.cloudflare.com/ajax/libs/angular.js/2.0.0-beta.7/… ... .. ... ... .. và tiếp tục '
micronyks

Tôi đã thấy điều này vài lần - đó là một vấn đề của IE, cụ thể là cách nó tải các tập lệnh nếu tôi nhớ không nhầm. Tôi e rằng tôi không biết cách sửa lỗi cho nó, đã lâu lắm rồi, nhưng hy vọng nó có thể giúp bạn đi đúng hướng.
Sasxa

Sasxa, tôi cũng phải đối mặt với vấn đề này trong FF. Tôi không biết vấn đề là gì. N cảm thấy bất lực ...
micronyks

Câu trả lời:


101

Điều này xảy ra với tôi vì tôi đang nhập mã của mình vào headthẻ, vì vậy, nó có khả năng đang chạy và cố gắng khởi động lại trước khi DOM sẵn sàng.

Bạn có thể di chuyển tập lệnh xuống cuối bodythẻ hoặc đặt mã bootstrap trong trình xử lý sự kiện:

document.addEventListener("DOMContentLoaded", function(event) {
  bootstrap(AppComponent);
});

hoặc là:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Example app</title>
  </head>
  <body>
    <my-app></my-app>
  </body>
  <script src="main.js" charset="utf-8"></script>
</html>

Không có main.jstập lệnh nào được đưa vào các bản trình diễn plunker trong tài liệu sắp chữ. Mặc dù tôi có lỗi.
Elfayer

5
Tôi không gặp lỗi này cho đến khi tôi cố gắng nhóm các tệp bản ghi đã biên dịch của mình.
ps2goat

2
Tôi phải đối mặt với cùng một vấn đề khi sử dụng webpack cho module bó .... và một lần tôi đặt kịch bản sau .. tag cơ thể .. nó làm việc ...
Refactor

2
Bạn cũng có thể gắn nó vào sự kiện window.onload:window.onload = function(){ platformBrowserDynamic().bootstrapModule(AppModule); }
kitimenpolku

3
OMG Tôi đã đập đầu vào tường quá lâu để cố gắng tìm ra điều này và nó quá đơn giản. Cảm ơn bạn!
Patrick Graham

69

Angular 4: Tôi đã phải thay đổi <app-root></app-root>bằng <my-app></my-app>trong tệp index.html


2
Có vẻ như có vấn đề với việc angular-clitạo app-roottham chiếu trong index.htmltệp, trong khi tệp ts entrypoint hướng dẫn Tour of Heroes đề cập đến my-app. IMO, cả hai nên sử dụng cùng một quy ước đặt tên vì nhóm Angular đã đề xuất angular-clilà cách tốt nhất để tạo một dự án.
Có gì trong một Google Search

Hơi tương tự, đề phòng bất kỳ ai gặp sự cố này với webpack-dev-server (WDS) - Tôi đã tạo ứng dụng của mình khi bộ chọn là <app-root> và khởi chạy ứng dụng bằng WDS. Sau đó, tôi đã thay đổi bộ chọn thành <my-app> trong component và index.html của mình. Đó là khi tôi bắt đầu nhận được lỗi trên. Vấn đề là, index.html trong thư mục 'dist' không được cập nhật. Tôi đã dừng WDS, xây dựng lại ứng dụng của mình và sau đó khởi chạy ứng dụng. Mọi thứ bắt đầu hoạt động tốt!
ramtech

26

Những việc cần làm:

  1. Tới app.module.ts (các mô-đun chính, trong hầu hết các trường hợp này là một cái tên)
  2. Kiểm tra xem bạn có phần " boostrap :" hay không - nếu không, hãy thêm:

    bootstrap: [AppComponent] // trong đó AppComponent là thành phần chính của bạn

  3. Kiểm tra xem nó có hoạt động ngay bây giờ hay không, nếu không - hãy truy cập AppComponent và kiểm tra bộ chọn của bạn . Nó phải giống như các thẻ trong nội dung trong index.html

vì vậy index.html nên chứa một cái gì đó như sau:

<body>
  <app-root>Loading...</app-root>
</body>

thay vì <app-root>bạn nên sử dụng bộ chọn từ AppComponent chính

  1. Nếu bạn đang sử dụng ứng dụng góc cạnh của mình trong trang web bên ngoài thì bạn nên cân nhắc sử dụng tiêu đề trì hoãn cho các tệp góc cạnh

4
<body>tag cố định nó
Alex Okrushko

Cảm ơn bạn! Nó đã giải quyết vấn đề của tôi.
Muhammad Ayyaz

6

Tôi gặp vấn đề tương tự khi sử dụng Angular Universal. Nhưng đó là vì tôi đang sử dụng BrowserModuletrong main.node.ts , giải pháp là

  imports: [
    UniversalModule,
    BrowserModule   // <- delete this will solve the issue
  ],

Và kiểm tra tại đây để biết thêm thông tin: https://github.com/angular/universal/issues/542


Điều này không đúng với các phiên bản mới nhất của Angular. Ngày nay BrowserModule thay thế UniversalModule nhưng một appId được chuyển làm tham số để máy khách và máy chủ có thể trao đổi. Xem tại đây: github.com/angular/universal/blob/…
Dessus

5

Nếu bạn đang sử dụng mẫu cốt lõi angle2 / asp.net từ đây: http://blog.stevensanderson.com/2016/10/04/angular2-template-for-visual-studio/, bạn có thể thấy thay thế một vài dòng cuối cùng của boot-client.ts với các cách sau sẽ giúp ích (và tránh nhiều lỗi bảng điều khiển trông đáng sợ khi HMR tải lại trang của bạn):

const bootApplication = () => { platform.bootstrapModule(AppModule); };
if (document.readyState === 'complete') {
    window.onload = () => bootApplication();
    location.reload();
} else {
    document.addEventListener('DOMContentLoaded', bootApplication);
}

4

Tôi đang cập nhật ứng dụng Angular 5.2 lên Angular 6.1 và gặp sự cố tương tự. Trong trường hợp này, vấn đề là tệp index.html hoàn toàn không có <body>. Thay vào đó, nó đã được bao gồm trong my-appthành phần.

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>Example</title>
  <base href="https://stackoverflow.com/">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="icon" type="image/x-icon" href="favicon.ico">
</head>
<my-app></my-app>
</html>

Điều này từng hoạt động với Angular 5.2 (và các phiên bản trước đó nữa) vì trong index.html đã tạo, các thẻ script được đặt ở cuối. Sau khi nâng cấp lên 6.1, thay vào đó, các thẻ script đã được đặt ở phần đầu của tệp (và tôi cho rằng do đó được thực thi trước khi <my-app></my-app>phần tử gốc thực sự có mặt.

Giải pháp là chuyển <body>sang index.html . (Ban đầu nó được đặt vào thành phần vì ai đó muốn áp dụng các lớp có điều kiện cho phần tử thân với ngClass.)


4

Không phải các câu trả lời ở trên đã giải quyết được vấn đề của tôi. Đây là cách giải quyết cùng một loại lỗi. Bạn không nên có nhiều hơn một thành phần làm thành phần Bootstarp. Vì vậy, mảng Bootstrap chỉ nên có một thành phần. Do nhầm lẫn, tôi đã đặt 4 thành phần trong mảng bootstrap. Tôi đã loại bỏ 4 thành phần đó từ đó và đưa vào mảng entryComponents (như được hiển thị trong mã bên dưới). Điều này đã giúp tôi.

@NgModule({
 declarations: [
AppComponent,
SanackBarBodyComponent,
SuccessNavBarComponent,
AlertNavBarComponent,
NormalNavBarComponent
],
entryComponents:[ 
SanackBarBodyComponent,
SuccessNavBarComponent,
AlertNavBarComponent,
NormalNavBarComponent
],

imports: [
BrowserModule,
BrowserAnimationsModule
],
 providers: [],
 bootstrap: [AppComponent
]
})
export class AppModule { }


2

Điều này đã xảy ra với tôi khi tôi thay đổi thành phần bootstrap từ AppComponentthành phần mới. Khi bạn thay đổi nó, bạn cũng cần phải thay đổi nó trong chính index.html. index.htmlnên chứa thành phần bootstrap.

Ví dụ: nếu bạn thay đổi app-componentthành app-logintrong app.module.tsphần bootstrap thì bạn nên cập nhật index.htmlnhư thế này

<body>
  <app-login></app-login>
</body>

1

Khi tôi tạo thành phần mới cần làm theo các bước dưới đây để giải quyết các vấn đề dưới đây.

Bước-1- Tạo thành phần mới với ng g c lakshya. Bước 2- Trong ứng dụng lakshya folfer được tạo với 4 tệp. Step-3- Index.html cần <app-root></app-root>đến <app-lakshya></app-lakshya> Bước 4- app.Module.ts thay đổi tệp bootstrap: [AppComponent] thành bootstrap: [LakshyaComponent]

để giải quyết lỗi trên.


0

Django + Angular

Tôi có một index.html tùy chỉnh, không phải cái được tạo bởi CLI góc cạnh.

Tôi gặp lỗi này vì tôi đã đặt các tệp tập lệnh được tạo trong <head>phần thay vì ở cuối </body>thẻ đóng (sau các <app-root></app-root>thẻ)


0

Trong app.module.ts của bạn, nếu bạn có ứng dụng của tôi trong bootstrap, hãy nhận xét hoặc xóa nó.

bootstrap: [AppComponent, // my-app]

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.