小编lol*_*lio的帖子

如何在导航到下一个位置之前关闭路线弹出窗口?(Angular 2)

我正在显示一系列您可以点击的项目,带您到下一个路线.您也可以单击此页面上的弹出窗口.如果单击弹出窗口,然后在显示下一个路径之前单击其中一个要销毁弹出窗口的项目.

onSelect(id) {
    if (this.router.url.includes('popup')) {

      let p = Promise.resolve(() => this.closePopup())
      p.then(() => this.router.navigate(['/', id]))

    } else {

      this.router.navigate(['/', id])

    }
  }

closePopup() {
    this.router.navigate([{outlets: {popup: null}}])
  }
Run Code Online (Sandbox Code Playgroud)

我真的不明白promises所以我不确定我是用正确的结构编写的,但是这段代码没有用,因为它总是导航到下一个路径,弹出窗口仍然在URL中.我试图在promise之外的相同结构中执行它,但它总是会导航到:id仍然在URL中的(popup).

我也尝试过:this.router.navigate(['/', id, {outlets: {popup: null}}]).

路由器中是否有一个允许绝对重写URL的功能?或者有没有办法确保它在导航到:id之前从URL中删除弹出窗口.

希望问题很清楚 - 非常感谢帮助!

angular2-routing angular

8
推荐指数
1
解决办法
1092
查看次数

如何通过子路由组件进行父组件交互?(Angular2)

在路由配置的根组件中,我有一个按钮.当我单击此按钮时,我想在激活的子路径中触发一个事件.

我一直在努力解决这个问题,而且唯一看起来很有希望的是使用双向服务(链接到角度文档).但是,我不知道如何让它发挥作用.

这是一个证明:

https://plnkr.co/edit/7zDTTTlABWD2GFo01jaz?p=preview

我已经设置了一个简单的路由配置,它自动重定向到TestComponent.当我点击路线应用程序级别的"单击"按钮时,我希望能够clickDetected()在TestComponent中触发该功能.

希望一切都清楚 - 任何建议表示赞赏!

代码如下;


app.component

@Component({
  selector: 'my-app',
  template: `
    <input type="button" (click)="onClick('hello')" value="click" />
    <router-outlet></router-outlet>
  `,
})
export class AppComponent {
  constructor(private testService: TestService) {
  }

  onClick(v){
    this.testService.declareClick(v)
  }
}
Run Code Online (Sandbox Code Playgroud)

test.service

@Injectable()
export class TestService {

  private clickedSource = new Subject<string>();

  clicked$ = this.clickedSource.asObservable();

  declareClick(value: string) {
    console.log(value)
    return this.clickedSource.next(value);
  }

}
Run Code Online (Sandbox Code Playgroud)

test.component

@Component({
  selector: 'my-test',
  template: `
    <div>
      <h1>Test Component</h1>
    </div>
  `,
})
export class TestComponent implements OnInit { …
Run Code Online (Sandbox Code Playgroud)

angular2-routing angular

5
推荐指数
1
解决办法
1540
查看次数

在forEach循环javascript中加入每个数组?

这是我的代码;

var data = [[40, 20, 60], [20, 30, 10], [50, 75, 40]];
var averageData = [];
data.forEach(function(entries) {
    entries.reduce(function(a, b) {
        return a + b[1];
    }, 0);
    console.log(entries);
});
Run Code Online (Sandbox Code Playgroud)

我希望能够将每个数组中的数字加在一起.

但是我不确定如何从forEach循环中将每个数组加在一起?

从这个数据我想输出[120, 60, 165].

重要的是数据在嵌套数组中,目的是尝试将嵌套数组从具有上述输出的单行中取出.

希望有人可以提供一些建议!

谢谢

javascript arrays

0
推荐指数
1
解决办法
76
查看次数

标签 统计

angular ×2

angular2-routing ×2

arrays ×1

javascript ×1