ionic-team / ionic-framework

A powerful cross-platform UI toolkit for building native-quality iOS, Android, and Progressive Web Apps with HTML, CSS, and JavaScript.
https://ionicframework.com
MIT License
51.02k stars 13.51k forks source link

bug: missing state property on routerLink #19291

Open aronrodrigues opened 5 years ago

aronrodrigues commented 5 years ago

Bug Report

Ionic version:

[x] 4.x

Current behavior:

state is being ignored.

Expected behavior:

state must be set.

Steps to reproduce:

Related code: https://angular.io/api/router/RouterLink page.html

...
<ion-item detail [routerLink]="[user.id]" [state]="{ user: user }">
  This doesn't work
</ion-item>
...
<a [routerLink]="[user.id]" [state]="{ user: user }">This works</a>

childPage.ts

...
constructor(private userDao: UsersDao, private activatedRoute: ActivatedRoute, private router: Router) {}

  async ngOnInit() {
    this.activatedRoute.params.subscribe(async params => {
      const state = this.router.getCurrentNavigation().extras.state;
      console.log({ state: this.router.getCurrentNavigation().extras });
      if (state && state.user) {
        console.log("State found");
        this.user = state.user;
      } else {
        console.log("State not found");
        const id = params.id;
        this.user = await this.userDao.get(id);
      }
    });
...

NavController supports it: this.navCtrl.navigateForward([/users/${user.id}], { state: { user } });

Other information:

Ionic info:

aronrodrigues commented 5 years ago

"@ionic-native/core": "^5.12.0", "@ionic-native/splash-screen": "^5.12.0", "@ionic-native/status-bar": "^5.12.0", "@ionic/angular": "^4.7.1",

aronrodrigues commented 4 years ago

Still happening in the latest version