# Angular navigate後,舊的component沒有被清除
## 特徵:
```typescript=
await this.router.navigate(['/main']);
```
以及`authGuard`失效
```typescript=
export const routes: Routes = [
{
path: 'login',
loadComponent: () => import('@features/login/login.component').then(m => m.LoginComponent),
},
{
path: 'main',
canActivateChild: [authGuard], // 失效 (not work)
loadChildren: () => import('@features/main-page/main-page.component').then(m => m.ROUTES),
},
{ path: '', redirectTo: '/login', pathMatch: 'full' },
{ path: '**', component: NotFoundComponent },
];
```
## 錯誤原因:
`provideAnimations()`加在錯誤的地方,這個跟Browser的Provider有關係,具體我這菜鳥也不懂
**app.component.ts**
```typescript=
import { Component } from '@angular/core';
import { RouterOutlet } from '@angular/router';
import { CommonModule } from '@angular/common';
import { provideAnimations } from '@angular/platform-browser/animations';
@Component({
selector: 'app-root',
standalone: true,
imports: [
CommonModule,
RouterOutlet
],
templateUrl: './app.component.html',
styleUrl: './app.component.scss',
providers:[
provideAnimations()
]
})
export class AppComponent {
}
```
## 解法:
將`provideAnimations()`放到`app.config.ts`中,因為版本不同,可能會在不同地方,可以找找看`provideRouter(routes)`在哪裡
**app.config.ts**
```typescript=
import { ApplicationConfig } from '@angular/core';
import { provideRouter } from '@angular/router';
import { routes } from './app.routes';
import { provideHttpClient, withFetch, withInterceptors } from '@angular/common/http';
import { authInterceptor } from '@interceptors/auth.interceptor';
import { provideAnimations } from '@angular/platform-browser/animations';
export const appConfig: ApplicationConfig = {
providers: [
provideAnimations(), // <-這行
provideRouter(routes),
provideHttpClient(withFetch(), withInterceptors([authInterceptor]))
]
};
```