Problem polega na tym, że kiedy uruchamiam moją aplikację, działa dobrze. Ale kiedy ją odświeżam, przez większość czasu widzę poniżej msg.
Selektor „moja-aplikacja” nie pasuje do żadnych elementów
Ale dziwne jest to, że wiele razy, gdy odświeżam moją aplikację, również działa.
Ostatecznie moja aplikacja zachowuje się dziwnie i nie mogę tego rozgryźć.
Czasami to działa, czasami nie ...
Jakaś sugestia, nie mogę wymyślić kodu ???
Uwaga: nie mam jeszcze złożonej struktury ani komponentów, ale prostą implementację.
my-app
komponentu.Potentially unhandled rejection [2] The selector "micropuppy-app" did not match any elements
iw FF- 'WYJĄTEK: selektor „moja-aplikacja” nie pasował do żadnych elementów BaseException @ cdnjs.cloudflare.com/ajax/libs/angular.js/2.0.0-beta.7/ ... .. ... ... .. i kontynuuj ”Odpowiedzi:
Zdarzyło mi się to, ponieważ importowałem swój kod w
head
tagu, więc potencjalnie działał i próbował załadować się, zanim DOM był gotowy.Możesz albo przenieść skrypt na dół
body
tagu, albo umieścić kod ładowania początkowego w detektorze zdarzeń:lub:
źródło
main.js
dokumentacji maszynopisu nie ma uwzględnienia skryptu w demonstracjach plunkera. Chociaż mam błąd.window.onload = function(){ platformBrowserDynamic().bootstrapModule(AppModule); }
Kątowe 4: musiałem zmienić
<app-root></app-root>
się<my-app></my-app>
w pliku index.htmlźródło
angular-cli
tworzeniemapp-root
odniesienia windex.html
pliku, podczas gdy plik ts dotyczący punktu wejścia samouczka Tour of Heroes odwołuje się do niegomy-app
. IMO powinni używać tej samej konwencji nazewnictwa, ponieważ zespół Angular zalecałangular-cli
jako najlepszy sposób tworzenia projektu.Rzeczy do zrobienia:
Sprawdź, czy masz część „ boostrap :” - jeśli nie, dodaj:
bootstrap: [AppComponent]
// gdzie AppComponent jest głównym składnikiemSprawdź, czy teraz działa, jeśli nie - przejdź do AppComponent i sprawdź swój selektor . Powinien być taki sam, jak tagi w treści w pliku index.html
więc index.html powinien zawierać coś takiego:
gdzie zamiast tego
<app-root>
należy użyć selektora z głównego komponentu AppComponentźródło
<body>
tag naprawił toMam ten sam problem, gdy używam Angular Universal. Ale to dlatego, że używam
BrowserModule
w main.node.ts , rozwiązaniem jestI sprawdź tutaj, aby uzyskać więcej informacji: https://github.com/angular/universal/issues/542
źródło
Jeśli używasz podstawowego szablonu angular2 / asp.net, dostępnego tutaj: http://blog.stevensanderson.com/2016/10/04/angular2-template-for-visual-studio/, możesz znaleźć kilka ostatnich wierszy boot-client.ts z następującą pomocą (i pozwala uniknąć wielu przerażająco wyglądających błędów konsoli podczas ponownego ładowania strony przez HMR):
źródło
Aktualizowałem aplikację Angular 5.2 do Angular 6.1 i napotkałem podobny problem. W tym przypadku problem polegał na tym, że plik index.html w ogóle nie miał
<body>
. Zamiast tego został uwzględniony wmy-app
komponencie.Kiedyś działało to z Angularem 5.2 (i wcześniejszymi wersjami), ponieważ w wygenerowanym pliku index.html tagi skryptu zostały umieszczone na końcu. Po aktualizacji do wersji 6.1 tagi skryptu zostały zamiast tego umieszczone na początku pliku (i zakładam, że w związku z tym są wykonywane przed
<my-app></my-app>
obecnością elementu głównego.Rozwiązaniem było przejście
<body>
do index.html . (Pierwotnie został umieszczony w komponencie, ponieważ ktoś chciał zastosować klasy warunkowe do elementu body za pomocąngClass
.)źródło
Żadna z powyższych odpowiedzi nie rozwiązała mojego problemu. W ten sposób można rozwiązać ten sam rodzaj błędu. Nie powinieneś mieć więcej niż jednego komponentu jako komponentu Bootstarp. Więc tablica Bootstrap powinna mieć tylko jeden komponent. Przez pomyłkę umieściłem 4 komponenty w tablicy bootstrap. Usunąłem stamtąd te 4 komponenty i umieściłem w tablicy entryComponents (jak pokazano w kod poniżej) .To mi pomogło.
źródło
Może przydałby się plik
Oznacz w swoich nagłówkach pliki-js.
http://www.w3schools.com/TAgs/att_script_defer.asp
źródło
Zdarzyło mi się to, gdy zmieniłem komponent bootstrap z
AppComponent
na nowy komponent. Kiedy to zmieniasz, musisz to również zmienić w głównymindex.html
.index.html
powinien zawierać komponent bootstrap.Na przykład, jeśli zmienisz
app-component
sięapp-login
wapp.module.ts
w sekcji bootstrap następnie należy zaktualizowaćindex.html
takiegoźródło
Kiedy tworzę nowy komponent, wykonaj poniższe czynności, aby rozwiązać poniższe problemy.
Step-1 - Utwórz nowy komponent z
ng g c lakshya
. Step-2 Pod folfer aplikacji lakshya utworzony z 4 plików. Step-3 Index.html należy<app-root></app-root>
wykonać<app-lakshya></app-lakshya>
krok 4: bootstrap zmiany pliku app.Module.ts: [AppComponent] na bootstrap: [LakshyaComponent]więc powyżej rozwiązanie błędu.
źródło
Django + Angular
Miałem niestandardowy plik index.html, a nie ten wygenerowany przez kątowy CLI.
Miałem ten błąd, ponieważ umieściłem wygenerowane pliki skryptów w
<head>
sekcji zamiast na końcu</body>
tagu zamykającego (po<app-root></app-root>
tagach)źródło
W pliku app.module.ts, jeśli masz my-app w bootstrapie, skomentuj ją lub usuń.
bootstrap: [AppComponent, // moja-aplikacja]
źródło