Angular 2中的ng-content vs router-outlet

时间:2017-02-18 12:22:35

标签: angular angular2-routing

我想知道,这是更好的做法

i。在父组件中使用 ng-content ,稍后在创建子组件时,将子组件包含在父选择器中。

例如:我想创建一个父视图作为组件。 一个。 LandingComponet(家长):

<div> 
Website Landing view 
....
...
<ng-content></ng-content>
....
...
<footer></footer>
...
</div>

湾LoginComponent或RegisterComponent(子组件)

<app-landing>
<div>
Login view or Register view
...
</div>
</app-landing>

℃。为所有子组件添加单独的路由

{ path: '', component: LandingComponent },
{ path: 'login', component: LoginComponent },
{ path: 'register', component: RegisterComponent }

ii。在父组件中使用 router-outlet ,并在路由文件中创建多个子路由。 例如:我想创建一个父视图作为组件。 一个。 LandingComponet(家长):

<div> 
Website Landing view 
....
...
<router-outlet></router-outlet>
....
...
<footer></footer>
...
</div>

湾LoginComponent或RegisterComponent(子组件)

<div>
Login view or Register view
...
</div>

℃。在app.routing.ts中添加路由器

{
path: '',
component: LandingComponent,
children: [ 
 { path: 'login', component: LoginComponent },
 { path: 'register', component: RegisterComponent }
]
}

两者都有利有弊,这对我来说是一个问题,

  

我个人喜欢第二种(ii。)方法,任何抬头都会帮助我   做出决定。

1 个答案:

答案 0 :(得分:2)

实际上,两者完全不同,或者我们不能说您可以ng-content使用router-outlet所需的ng-content。 基本上

  

NG-含量

当我们必须将一些内容包装在另一个组件中时,使用

,几乎不使用ng-content 2或3级深度组件。 此外,您可以设置为ng-content等样式,但

  

路由器出口

当我们必须为应用程序配置路由结构时使用

当我们必须在一个插座中加载许多/不包含组件时。

另外,我建议您不要在用例中使用router-outlet,而是使用<?php session_start(); $_SESSION['code'] = '1323'; // here will your captcha is stored i have used a constant value; ?> <!DOCTYPE html> <html> <head> <title></title> </head> <body> <form> <input type="text" name="captcha" id="captcha"> <input type="submit" name="submit" value="submit" onclick=" event.preventDefault(); q_form_val();"> </form> <script> function q_form_val() { var captcha_entered = document.getElementById("captcha").value; if (captcha_entered == "") { alert("Please enter the Captcha"); return false; }else if( captcha_entered == "<?php echo $_SESSION['code']; ?>" ){ alert("captcha matched"); return true; }else if( captcha_entered != "<?php echo $_SESSION['code']; ?>" ){ alert("captcha not matched"); return false; } } </script> </body> </html>