Angular 方法在 ngOnIt 中有效,但在单击按钮时无法正常工作
Angular method works in ngOnIt but doesn't work properly on button click
我正在使用 Facebook SDK for Javascript with ng2-facebook-sdk
我遇到了奇怪的问题,谁能帮我一下。
在下面的代码中,我正在初始化 Facebook SDK 的选项并为用户启动登录,但是当我将代码放入 ngOnIt()
时,它始终有效(始终有效意味着:用户将获得弹出消息准备输入 Facebook 用户名和密码,一旦成功登录,弹出窗口将关闭并返回主页)但是这 不可取,因为用户打开页面会强制用户使用 Facebook[ 登录=15=]
但是当我将代码放在 ngOnI 之外的某个方法下时,它不起作用(此处出现弹出窗口,一旦用户输入凭据并提交,弹出窗口变为白色并保持不变,并且不会返回主页)
触发我下面用的方法HTML
<form class="form-inline my-2 my-lg-0">
<button class="btn btn-secondary my-2 my-sm-0" type="submit" (click)="loginWithFacebook()">Login</button>
</form>
不起作用
import { Component, OnInit } from '@angular/core';
import { FacebookService, LoginResponse, InitParams } from 'ngx-facebook';
import { Router } from '@angular/router';
@Component({
selector: 'app-navbar',
templateUrl: './navbar.component.html',
styleUrls: ['./navbar.component.css']
})
export class NavbarComponent implements OnInit {
constructor(private fb: FacebookService, private rt: Router) {}
ngOnInit() {}
loginWithFacebook() {
const initParams: InitParams = {
appId: 'xxx',
xfbml: true,
version: 'v2.11'
};
this.fb.init(initParams);
this.fb.login()
.then((response: LoginResponse) => console.log(response))
.catch((error: any) => console.error(error));
}
}
有效
import { Component, OnInit } from '@angular/core';
import { FacebookService, LoginResponse, InitParams } from 'ngx-facebook';
import { Router } from '@angular/router';
@Component({
selector: 'app-navbar',
templateUrl: './navbar.component.html',
styleUrls: ['./navbar.component.css']
})
export class NavbarComponent implements OnInit {
constructor(private fb: FacebookService, private rt: Router) {}
ngOnInit() {
const initParams: InitParams = {
appId: 'xxx',
xfbml: true,
version: 'v2.11'
};
this.fb.init(initParams);
this.fb.login()
.then((response: LoginResponse) => console.log(response))
.catch((error: any) => console.error(error));
}
}
你应该使用type="button"
type="submit"
按钮用于提交表单。如果您想创建一个自定义按钮,然后使用 JavaScript 自定义行为,您需要使用 ,或者更好的是,一个元素。
我正在使用 Facebook SDK for Javascript with ng2-facebook-sdk
我遇到了奇怪的问题,谁能帮我一下。
在下面的代码中,我正在初始化 Facebook SDK 的选项并为用户启动登录,但是当我将代码放入 ngOnIt()
时,它始终有效(始终有效意味着:用户将获得弹出消息准备输入 Facebook 用户名和密码,一旦成功登录,弹出窗口将关闭并返回主页)但是这 不可取,因为用户打开页面会强制用户使用 Facebook[ 登录=15=]
但是当我将代码放在 ngOnI 之外的某个方法下时,它不起作用(此处出现弹出窗口,一旦用户输入凭据并提交,弹出窗口变为白色并保持不变,并且不会返回主页)
触发我下面用的方法HTML
<form class="form-inline my-2 my-lg-0">
<button class="btn btn-secondary my-2 my-sm-0" type="submit" (click)="loginWithFacebook()">Login</button>
</form>
不起作用
import { Component, OnInit } from '@angular/core';
import { FacebookService, LoginResponse, InitParams } from 'ngx-facebook';
import { Router } from '@angular/router';
@Component({
selector: 'app-navbar',
templateUrl: './navbar.component.html',
styleUrls: ['./navbar.component.css']
})
export class NavbarComponent implements OnInit {
constructor(private fb: FacebookService, private rt: Router) {}
ngOnInit() {}
loginWithFacebook() {
const initParams: InitParams = {
appId: 'xxx',
xfbml: true,
version: 'v2.11'
};
this.fb.init(initParams);
this.fb.login()
.then((response: LoginResponse) => console.log(response))
.catch((error: any) => console.error(error));
}
}
有效
import { Component, OnInit } from '@angular/core';
import { FacebookService, LoginResponse, InitParams } from 'ngx-facebook';
import { Router } from '@angular/router';
@Component({
selector: 'app-navbar',
templateUrl: './navbar.component.html',
styleUrls: ['./navbar.component.css']
})
export class NavbarComponent implements OnInit {
constructor(private fb: FacebookService, private rt: Router) {}
ngOnInit() {
const initParams: InitParams = {
appId: 'xxx',
xfbml: true,
version: 'v2.11'
};
this.fb.init(initParams);
this.fb.login()
.then((response: LoginResponse) => console.log(response))
.catch((error: any) => console.error(error));
}
}
你应该使用type="button"
type="submit"
按钮用于提交表单。如果您想创建一个自定义按钮,然后使用 JavaScript 自定义行为,您需要使用 ,或者更好的是,一个元素。