单击子菜单,在侧边栏中,转到 url with Material Design using Angular 4

Clicking on submenu, in a sidebar, go to a url with Material Design using Angular 4

我正在编写一本书 collection 程序,我有一个静态 sidebar,它有选项,当您单击某些选项时,它会将您带到 url .

我无法让 转到 url 部分正常工作。

所以我只有一个 sidenav,然后是一个名为 Store 的菜单项,然后是一个带有名为 Amazon 的子菜单。

可能有错别字,因为代码在不同的计算机上,所以我输入了这个。基本上,我如何获得子菜单会将我发送到 url 的位置?我可以从菜单项中完成。

<md-sidenav #sidenav mode="side" opened="true" class="app-sidenav">
  <md-nav-list>
    <button md-list-item>Book Choices</button>
    <button md-button>
      <span md-list-item
         [mdMenuTriggerFor]="amazon">Stores</span></button>
  </md-nav-list>
</md-sidenav>

<md-menu #amazon>
  <button md-button>
    <span md-menu-item>
     <span (click)="'http://amazon.com'">Amazon</span>
    </span>
  </button>
</md-menu>

这个东西 (click)="'http://amazon.com'" 什么都不做,因为你只是传递了一个字符串。

你试过了吗(click)="window.open('http://amazon.com', '_blank')"

或创建一个执行 window.open(parameter)

的函数
openlink(url: string)
{
  window.open(string, "_blank");
}

// HTML attribute
(click)="openlink('http://amazon.com')"

您无法使用此表达式 (click)="'http://amazon.com'" 导航至 url。您需要使用 window.location.hrefwindow.open 方法。以下是如何做到这一点:

<md-menu #amazon>
  <button md-button>
    <span md-menu-item>
     <span (click)="gotoUrl('http://www.amazon.com')">Amazon</span>
    </span>
  </button>
</md-menu>

在您的打字稿代码中,定义 gotoUrl() 方法:

gotoUrl(url:string){
    window.location.href=url;
}

如果您想在浏览器的新标签页中打开 url,请使用此代码:

gotoUrl(url:string){
    window.open(url, "_blank");
}

因此,虽然您可以在 angular 中使用(单击)事件,但如果您需要做的只是导航到另一个 url,您始终可以使用旧的 html 和主播 link。如果这就是您想要的,请保持简单

<md-menu #amazon>
  <button md-button>
    <a md-menu-item href="http://amazon.com">
     Amazon
    </a>
  </button>
</md-menu>

如果您仍想使用点击,可以,下面的答案是正确的,只是有一个错字

所以在你的组件中添加一个方法,如:

goToUrl(url: string) {
    window.open(url);
}

然后在你看来

<md-menu #amazon>
    <button md-button>
        <span md-menu-item (click)="goToUrl('http://amazon.com')">
        Amazon
        </span>
     </button>
</md-menu>