在Angular 2中设置URL参数

时间:2017-03-17 16:28:44

标签: javascript angular url typescript parameters

我正在使用以下代码:

this.router.navigate(['/app/chart', {chartColor: this.color, chartWidth: this.width}]);

它将我的网址设置为:

http://localhost/app/chart;chartColor=blue;chartWidth=600

没关系。 但是当我调用该函数(将变量发送到URL)时,我的组件正在重新加载。我真的不想要它。

我只想将变量发送到URL

还有其他更好的方法吗?

1 个答案:

答案 0 :(得分:0)

我真的不知道angular2足够好但是有角度" 1"我使用以下内容:

首先我得到了#34;基本网址" (协议+主机名)

sum(total)

然后我添加"变量"

给我的网址
using Rebus.Bus;
using Rebus.Config;
using Rebus.Handlers;
using Rebus.Retry.Simple;
using Rebus.Routing.TypeBased;
using Rebus.Sagas;
using Rebus.SimpleInjector;
using Rebus.Transport.InMem;
using SimpleInjector;
using System;
using System.Threading.Tasks;

// Rebus.3.1.2
// Rebus.SimpleInjector.3.0.0

namespace RebusPlaypen
{
     public interface IMyDependency
     {
          void DoSomethingGood();
     }

     public class MyDependency : IMyDependency
     {
          public void DoSomethingGood()
          {
                Console.WriteLine("I've done something");
          }
     }

     public class MyMessageA
     {
          public Guid CollationId { get; set; }
          public string FaveIceCreamFlavour { get; set; }
     }

     public class MyMessageB
     {
          public Guid CollationId { get; set; }
          public string FaveBand{ get; set; }
     }

     public class MyMessageSagaData : ISagaData
     {
          public Guid Id {get;set;}
          public int Revision {get;set;}
          public Guid CollationId {get;set;}
          public bool HasFaveBand { get; set; }
     }

     public interface IMyMessageSaga : IAmInitiatedBy<MyMessageA>,
          IHandleMessages<MyMessageB>
     {
     }

     public class MyMessageSaga: Saga<MyMessageSagaData>,
          IMyMessageSaga
     {
          readonly IMyDependency _myDependency;
          readonly IBus _bus;

          public MyMessageSaga(IMyDependency myDependency,
                IBus bus)
          {
                _myDependency = myDependency;
                _bus = bus;
          }

          protected override void CorrelateMessages(ICorrelationConfig<MyMessageSagaData> config)
          {
                config.Correlate<MyMessageA>(s => s.CollationId, d => d.CollationId);
                config.Correlate<MyMessageB>(s => s.CollationId, d => d.CollationId);
          }

          public async Task Handle(MyMessageA message)
          {
                Console.WriteLine("Handled MyMessageA");
                _myDependency.DoSomethingGood();
                await _bus.Send(new MyMessageB { CollationId = message.CollationId, FaveBand = "Depeche Mode" });
                await PossiblyPerformCompleteAction();
          }

          public async Task Handle(MyMessageB message)
          {
                Console.WriteLine("Handled MyMessageB");
                _myDependency.DoSomethingGood();
                Data.HasFaveBand = true;
                await PossiblyPerformCompleteAction();
          }

          async Task PossiblyPerformCompleteAction()
          {
                if (Data.HasFaveBand)
                {
                     MarkAsComplete();
                }
          }
     }

     public static class RebusSimpleInjectorSagaDemo
     {
          public static void Run()
          {
                var container = new Container();
                container.Register<IMyDependency, MyDependency>();
                container.Register<MyMessageSaga>(Lifestyle.Transient);
                container.Register<IMyMessageSaga>(() => container.GetInstance<MyMessageSaga>(), Lifestyle.Transient);

                var network = new InMemNetwork(true);
                var adapter = new SimpleInjectorContainerAdapter(container);

                var _bus = Configure
                     .With(adapter)
                     .Logging(l => l.ColoredConsole(Rebus.Logging.LogLevel.Error))
                     .Transport(t => t.UseInMemoryTransport(network,"my_nice_queue"))
                     .Routing(r => r.TypeBased().MapAssemblyOf<MyMessageA>("my_nice_queue"))
                     .Options(o =>
                     {
                          o.SetNumberOfWorkers(1);
                          o.SetMaxParallelism(1);
                          o.SimpleRetryStrategy(maxDeliveryAttempts: 1);
                     })

                     .Start();

                container.Verify();

                _bus.Send(new MyMessageA { CollationId = Guid.NewGuid(), FaveIceCreamFlavour = "Strawberry" }).Wait();

                Console.WriteLine("Running");
                Console.ReadLine();
          }
     }
}

最后我将字符串(url)写入浏览器的历史记录:

Tbaseurl = location.protocol + "//" + location.host+'/';

这会将网址保存到用户的浏览器历史记录中(因此,如果他们想要返回页面,则可以执行此操作)并更新网址而无需刷新页面

再一次,我无法给你答案,因为我不知道angular2足以帮助你,但我希望这提供足够的信息来帮助你解决问题