route navigate link example angular typescript angular2-routing

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; }