link - router.navigate angular 6
No se puede inyectar ActivatedRouteSnapshot (1)
Inyectar ActivatedRouteSnapshot en un componente no funciona (y tampoco inyectar ActivatedRoute). Aquí el rastro de pila:
"Error: Can''t resolve all parameters for ActivatedRouteSnapshot: (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?).
at SyntaxError.ZoneAwareError (http://localhost:4200/polyfills.bundle.js:7042:33)
at SyntaxError.BaseError [as constructor] (http://localhost:4200/vendor.bundle.js:73735:16)
at new SyntaxError (http://localhost:4200/vendor.bundle.js:6140:16)
at CompileMetadataResolver._getDependenciesMetadata (http://localhost:4200/vendor.bundle.js:19345:31)
at CompileMetadataResolver._getTypeMetadata (http://localhost:4200/vendor.bundle.js:19220:26)
at CompileMetadataResolver._getInjectableMetadata (http://localhost:4200/vendor.bundle.js:19208:21)
at CompileMetadataResolver.getProviderMetadata (http://localhost:4200/vendor.bundle.js:19450:40)
at http://localhost:4200/vendor.bundle.js:19408:49
at Array.forEach (native)
at CompileMetadataResolver._getProvidersMetadata (http://localhost:4200/vendor.bundle.js:19375:19)
at CompileMetadataResolver.getNonNormalizedDirectiveMetadata (http://localhost:4200/vendor.bundle.js:18848:30)
at CompileMetadataResolver._loadDirectiveMetadata (http://localhost:4200/vendor.bundle.js:18736:23)
at http://localhost:4200/vendor.bundle.js:18937:54
at Array.forEach (native)
at CompileMetadataResolver.loadNgModuleDirectiveAndPipeMetadata (http://localhost:4200/vendor.bundle.js:18936:41)"
En el componente, ActivatedRouteSnapshot se inyecta de la siguiente manera:
constructor([...], private router: Router,
private route: ActivatedRouteSnapshot) {
[...]
}
ActivatedRouteSnapshot se proporciona en app.component.ts
:
@Component({
selector: ''app-root'',
templateUrl: ''./app.component.html'',
styleUrls: [''./app.component.css''],
providers: [[...], ActivatedRouteSnapshot]
})
Estoy intentando acceder a los parámetros de consulta de forma similar a como se hace aquí: https://stackoverflow.com/a/38997116/3433306
De acuerdo con los documentos, debería ser tan simple como agregarlo a los parámetros del constructor: https://angular.io/docs/ts/latest/api/router/index/ActivatedRouteSnapshot-interface.html
¿Qué me falta para inyectar con éxito ActivatedRouteSnapshot?
Utilice ActivatedRoute en lugar de ActivatedRouteSnapshot. Entonces puedes usar la instantánea así:
constructor(activatedRoute: ActivatedRoute) {
var snapshot = activatedRoute.snapshot;
}