Angular 如何在app.module.ts中以角度设置全局变量
我正在为一个应用程序使用FirebaseUI,我想设置一种全局变量,用于保存用户是否是新用户 我在app.module.ts中设置了firebaseAuthConfig,与文档中一样,一切正常。我可以创建帐户,登录 我还可以查看用户是否是新用户 我的问题是我无法发送此数据。在应用程序的某些部分,如果用户是新用户,我希望能够显示不同的数据 我试图在提供程序中发送isNewUser值,但收到一个错误,表示对象未定义Angular 如何在app.module.ts中以角度设置全局变量,angular,authentication,firebaseui,Angular,Authentication,Firebaseui,我正在为一个应用程序使用FirebaseUI,我想设置一种全局变量,用于保存用户是否是新用户 我在app.module.ts中设置了firebaseAuthConfig,与文档中一样,一切正常。我可以创建帐户,登录 我还可以查看用户是否是新用户 我的问题是我无法发送此数据。在应用程序的某些部分,如果用户是新用户,我希望能够显示不同的数据 我试图在提供程序中发送isNewUser值,但收到一个错误,表示对象未定义 import { NgModule } from '@angular/core';
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { RouteReuseStrategy } from '@angular/router';
import { IonicModule, IonicRouteStrategy } from '@ionic/angular';
import { firebase, firebaseui, FirebaseUIModule } from 'firebaseui-angular';
import { environment } from '../environments/environment';
import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
import { AngularFireModule } from '@angular/fire';
import { AngularFireAuthModule } from '@angular/fire/auth';
import { AuthService } from './services/auth.service';
import { AuthGuard } from './services/auth.guard';
let newUser;
const firebaseUiAuthConfig: firebaseui.auth.Config = {
callbacks: {
signInSuccessWithAuthResult: function (authResult) {
this.newUser = authResult.additionalUserInfo.isNewUser;
console.log("NEW USER", newUser);
authResult.user.getIdToken().then(function (token) {
console.log("TOKEN", token);
})
return true;
}
},
signInSuccessUrl: "/tabs/discover",
signInFlow: 'popup',
signInOptions: [
{
requireDisplayName: true,
provider: firebase.auth.EmailAuthProvider.PROVIDER_ID
}
],
tosUrl: '<your-tos-link>',
privacyPolicyUrl: '<your-privacyPolicyUrl-link>',
credentialHelper: firebaseui.auth.CredentialHelper.NONE
};
@NgModule({
declarations: [AppComponent],
entryComponents: [],
imports: [
BrowserModule,
IonicModule.forRoot(),
AppRoutingModule,
AngularFireModule.initializeApp(environment.firebaseConfig),
AngularFireAuthModule,
FirebaseUIModule.forRoot(firebaseUiAuthConfig)
],
providers: [
{ provide: RouteReuseStrategy, useClass: IonicRouteStrategy },
AuthService,
AuthGuard,
{ provide: 'newUser', useValue: this.newUser } // provide newUser to be used from other sections of the app
],
bootstrap: [AppComponent],
})
export class AppModule { }
我在这里得到值(如果我使用字符串),尽管injector.get()已被弃用
但这对我没有帮助,因为我需要发送this.newUser值,而不是静态文本
signInSuccessWithAuthResult: function (authResult) {
this.newUser = authResult.additionalUserInfo.isNewUser;
console.log("NEW USER", newUser);
authResult.user.getIdToken().then(function (token) {
console.log("TOKEN", token);
})
return true;
}
我希望你能帮忙
多谢各位
问候,,
AG您可以使用存储全局变量。例如: 创建名为account.service.ts的服务组件,并存储名为
isUserNew的变量。确保根据用户是否为新用户更改此变量。
运行命令:ng g s services/account
生成服务
account.service.ts
从'@angular/core'导入{Injectable};
@注射的({
提供于:“根”
})
公共出口账户服务{
public isUserNew=false;
}
在其他组件中,可以通过构造函数注入此服务来使用此服务
组件。ts:
构造函数(公共帐户:AccountService){
现在,您可以通过执行account.isUserNewHi来访问该组件中的isUserNew
。我已经有一些服务了。我的问题是从app.module.ts发送变量数据,其中firebaseUi配置为。我只能在回调中看到用户是否是新用户。回调在app.module.ts中。
signInSuccessWithAuthResult: function (authResult) {
this.newUser = authResult.additionalUserInfo.isNewUser;
console.log("NEW USER", newUser);
authResult.user.getIdToken().then(function (token) {
console.log("TOKEN", token);
})
return true;
}