Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 如何在菜单中显示用户名_Angular_Ionic Framework_Ionic3 - Fatal编程技术网

Angular 如何在菜单中显示用户名

Angular 如何在菜单中显示用户名,angular,ionic-framework,ionic3,Angular,Ionic Framework,Ionic3,我的app.component.ts中有一个{{user_name}}变量,我想用它来显示用户登录后从本地存储中获取的用户名 但这只在应用程序启动时加载,我想在用户登录后重新加载它。当我在登录后关闭并重新打开应用程序时,它工作正常,并显示用户名。但一开始,它只显示“hi”,不显示用户名 <ion-menu [content]="content" > <ion-header> <ion-toolbar> <ion-tit

我的app.component.ts中有一个
{{user_name}}
变量,我想用它来显示用户登录后从本地存储中获取的用户名

但这只在应用程序启动时加载,我想在用户登录后重新加载它。当我在登录后关闭并重新打开应用程序时,它工作正常,并显示用户名。但一开始,它只显示“hi”,不显示用户名

<ion-menu [content]="content" >
    <ion-header>
      <ion-toolbar>
        <ion-title>
            <p>
            HI! {{user_name}}
        </p></ion-title>
      </ion-toolbar>

    </ion-header>

    <ion-content>

      <ion-list >

        <button menuClose ion-item *ngFor="let p of pages" (click)="openPage(p)">
          {{p.title}}

        </button>
        <button  menuClose ion-item (click)="logout()" >
          Log Out
        </button>
      </ion-list>

    </ion-content>

  </ion-menu>

  <!-- Disable swipe-to-go-back because it's poor UX to combine STGB with side menus -->
  <ion-nav [root]="rootPage" #content swipeBackEnabled="false"></ion-nav>


你好{{user_name}}

{{p.title}} 注销

我知道我可以在用户登录时发布事件,但如何在收到事件后重新加载菜单

我遇到了一个非常类似的情况,我认为最好的方法是:

应用程序组件.ts

   import { ..., Events } from 'ionic-angular'; //First import events

   constructor(
    ...
    public events: Events,
    ...
    ){
        .....
        events.subscribe('user:created', (user) => {

          this.user_name=user.name;

        });

     ...
    }
现在,您可以使用
this.events.publish('user:created',user')在应用程序中的任何位置更改该值

例如:

login.ts

    import { Your other imports...,Events} from 'ionic-angular';

    constructor(
      ...
      public events: Events,
      ...
      ) {}

     // let's assume you did your login and have an user array which has user.name in it,
     // pass that data like this

     updateUserInfo(user){
      this.events.publish('user:created', user);
     }

它将按预期工作。希望它有助于…

显示从LocalStorages获取的代码这是Angular中变量的状态管理所做的,在这种情况下,您需要使用observable/Subscribe,因为Angular正在使用离子事件可能会对您有所帮助。参考此链接是的,我现在已经发布了一个事件,但是如果我发布了一个我力所能及的事件,我怎么能重新加载菜单,请留下您宝贵的建议@我不太清楚你这是什么意思?你对活动是如何运作的好奇吗?很抱歉,我知道活动是如何运作的,我只想知道当一个活动发生时,我已经订阅了它。在那个事件发生的时候,我能捕捉到它并能发出警报。但是我只希望菜单应该重新加载,而不是那个警报,因为它没有显示用户名
this.events.publish
将重新加载离子菜单上的数据,如果您按照我在回答中解释的操作。如果你创建一个stackblitz将更容易提供帮助。非常感谢你在逻辑中添加了一些内容后提供了宝贵的帮助。我是在你的帮助下做的